2010-06-04 5 views
0

J'ai un site qui utilise ssl lors de l'accès à un sous-domaine qui héberge essentiellement l'application réelle, alors que le site frontal est présent sur www, que je ne veux pas utiliser ssl. Donc, cela permettrait:.htaccess force ssl quand pas www

http://www.domain.com 

mais si quelqu'un tape:

http://secure.domain.com 

ils sont obligés de:

https://secure.domain.com 

qui lors de l'utilisation de cette sous-domaine ne permet pas de trafic non-ssl .

Actuellement, j'ai dans mon fichier .htaccess:

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

RewriteCond "%{HTTP_HOST}" !^www.* [NC] 
RewriteCond "%{HTTP_HOST}" ^([^\.]+).*$ 
RewriteRule ^(.*)$ https://secure.domain.com/a/login/%1 [R=301,L] 

Cela fonctionne très bien, mais si je puis modifier l'URI pour supprimer les s de https il charge encore la page mais sans ssl.

Si j'ajouter:

SSLOptions +StrictRequire 
SSLRequireSSL 

au sommet du fichier .htaccess alors il impose toujours le trafic vers ssl, mais qui est pour tous les sous-domaines, y compris www.

Existe-t-il un moyen d'intercepter uniquement le trafic non-www et de forcer l'utilisation de ssl?

EDIT:

Pour clarifier:

Par exemple, si vous êtes à:

https://secure.domain.com/a/login/test 

et modifier l'URI être

http://secure.domain.com/a/login/test 

il charge toujours la page mais n'utilise pas ssl. Mais si j'utilise

SSLRequireSSL 

il force l'exigence de l'ensemble du site, et je ne veux pas utiliser ssl à

http://www.domain.com 
+0

Voulez-vous s'il vous plaît expliquer plus sur elle: « Cela fonctionne très bien, mais si je puis modifier l'URI pour supprimer les s de https il charge encore la page mais sans ssl. " – Ehsan

Répondre

2

RESOUDRE

Après un peu de peaufinage J'ai maintenant résolu ce problème. Ce que j'ai fait était de modifier le fichier .htaccess qui était dans le sous-répertoire où se trouve l'application: https://secure.domain.com/un/login/test et de le définir pour détecter si ssl était utilisé ou non (je devrais ajouter le reste du fichier .htaccess est au profit de CodeIgniter):

RewriteEngine on 

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

RewriteCond %{HTTPS} on 
RewriteCond $1 !^(index\.php|images|includes|css|js|robots\.txt|favicon\.ico) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L] 
Questions connexes