2010-03-01 5 views
2

Je sais qu'il y a beaucoup de sujets concernant ma question. Je les ai tous vérifiés et essayés mais je ne peux pas le faire fonctionner. Je dois réécrire http à https sur certaines pages seulement. Après avoir visité les pages https, l'URL retournera à http. C'est ce que j'ai jusqu'à présent:Réécrire http à https sur certaines pages en utilisant seulement .htaccess


# Rewrite Rules for domain.com 
RewriteEngine On 
RewriteBase/

#Rewrite www to domain.com 
RewriteCond %{HTTP_HOST} ^www\.domain\.com [NC] 
RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301] 

#Rewrite to https 
RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} /secure.php 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L] 

#traffic to http://, except secure.php 
RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} /secure.php 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L] 

Lorsque je saute le dernier ensemble de règles (trafic http: //, à l'exception secure.php'pour) la page se charge secure.php'pour comme https et est crypté. BIEN. Avec le dernier ensemble de règles (trafic vers http: //, sauf secure.php), l'URL réécrit en https, tourne en bleu (SSL) pendant une seconde et disparaît (pas de SSL) mais l'URL est toujours https.

Une idée? Jacek

+0

Votre 3ème jeu de RewriteCond et RewriteRule comme vous les avez indiqués ici, sont identiques au 2nd. –

Répondre

4

Il y a une erreur avec le 3ème ensemble de règles. Voici la solution: avec le 3ème jeu de règles: si le https est "on" alors si l'URL ne contient pas "/ secure" alors rediriger vers http.

# Rewrite Rules for domain.com 
RewriteEngine On 
RewriteBase/

#Rewrite www to domain.com 
RewriteCond %{HTTP_HOST} ^www\.domain\.com [NC] 
RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301] 

#Rewrite to https 
RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} /secure.php 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L] 

#traffic to http://, except secure.php 
RewriteCond %{HTTPS} on 
RewriteCond %{REQUEST_URI} !(/secure.php) 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [L] 

Off conseils sujet: s'il vous plaît chercher Yahoo Ralentissez leurs conseils un très intelligent sur l'optimisation de site Web et vous comprendrez pourquoi il est toujours préférable d'avoir le « www » avant. Vous feriez mieux de faire le contraire pour votre règle de réécriture # 1: s'il n'y a pas de "www", ajoutez-le.


S'il vous plaît essayer d'utiliser la directive RewriteLog: il vous aide à traquer ces problèmes:

# Trace: 
# (!) file gets big quickly, remove in prod environments: 
RewriteLog "/web/logs/mywebsite.rewrite.log" 
RewriteLogLevel 9 
RewriteEngine On 

Dites-moi si cela fonctionne.

+1

Mais n'avez-vous pas eu de problèmes avec le référencement de contenu non-SSL (c'est-à-dire des scripts, des images, etc.)? J'ai essayé ceci mais mes scripts/feuilles de style sont référencés sur ces pages SSL comme non-ssl qui montre à l'utilisateur le message d'avertissement concernant le contenu non sécurisé. – jon

+0

+1 cela fonctionne pour moi. je fais un changement au lieu de 'domain.com', j'écris'% {HTTP_HOST} ' – diEcho

Questions connexes