2010-09-07 7 views
0

J'utilise les réécritures mod suivants pour assurer non seulement les URL canoniques, mais aussi que le site est affiché à l'aide HTTPS:ModRewrite avec HTTPS

RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 
// It think the problem must be here --^ 

RewriteCond %{HTTP_HOST} ^rto12\.ca$ [NC] 
RewriteRule ^(.*)$ https://www.rto12.ca/$1 [R=301,L] 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php? 
RewriteRule ^index\.php?$ https://www.rto12.ca/ [R=301,L] 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html? 
RewriteRule ^index\.html?$ https://www.rto12.ca/ [R=301,L] 

Mon problème vient quand vous essayez d'aller ici: rto12.ca. .. Le navigateur vous prend ici: `https://www.rto12.ca/https://rto12.ca/ '

C'est la première condition/règle qui cause ceci. Toute suggestion serait appréciée.

+0

Qu'est-ce que vous utilisez pour forcer le HTTPS? Je ne vois pas de règle qui vérifie cela ici. –

+0

Oh bon point Tim, et probablement où mon problème se trouve: RewriteCond% {HTTPS} off RewriteRule (. *) Https: //% {HTTP_HOST}% {REQUEST_URI} – jay

Répondre

3

Cette règle:

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

... me contenterai de réécrire la demande de https://rto12.ca/REQUEST_URI, puis le faire passer à la règle suivante (l'entrée à la règle suivante, que vous ajoutez à la fin de la demande, sera https://rto12.ca/REQUEST_URI). Cependant, pour que cela fonctionne correctement, vous avez besoin de rediriger immédiatement:

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

Il est probable possible de combiner toutes vos règles dans au plus une redirection unique, alors laissez-moi jouer un peu avec et je Je vais voir ce que je peux trouver, puis je mettrai à jour la réponse. Ajouter les drapeaux devrait résoudre votre problème de toute façon, cependant.

Modifier: Je pense que cela devrait prendre tout en une seule fois:

RewriteEngine On 

RewriteCond %{HTTPS}  =off [OR] 
RewriteCond %{HTTP_HOST} !^www\. [OR] 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(html|php) 
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)$ 
RewriteRule ^(index\.(html|php))|(.*)$ https://www.%2/$3 [R=301,L] 
+0

Cela a certainement fait Tim, merci! Si vous venez avec une seule redirection pour faire ce que je fais ici, j'aimerais le voir. Merci encore. – jay

+0

@jeerose - Cool, content que ça marche. J'ai mis à jour la réponse avec un bloc de redirection combiné, voir si cela prend soin de tout ce que vous vouliez. –

+0

Il le fait en effet. Merci beaucoup pour votre temps, Tim. – jay