2010-05-04 5 views
3

Je souhaite m'assurer que certaines URL sur mon site sont toujours accessibles via HTTPS alors que toutes les autres URL sont accessibles via HTTP.Comment forcer SSL pour certaines URL et forcer le non-SSL pour tous les autres?

Je peux obtenir l'un ou l'autre cas travaillant dans mon fichier .htaccess, cependant si j'accepte les deux, alors j'obtiens des redirections infinies.

Mon fichier .htaccess est:

<IfModule mod_expires.c> 
# turn off the module for this directory 
ExpiresActive off 
</IfModule> 

Options +FollowSymLinks 
AddHandler application/x-httpd-php .csv 

RewriteEngine On 

RewriteRule ^/?registration(.*)$ /register$1 [R=301,L] 

# Force SSL for certain URL's 
RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} (login|register|account) 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

# Force non-SSL for certain URL's 
RewriteCond %{HTTPS} on 
RewriteCond %{REQUEST_URI} !(login|register|account) 
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

# Force files ending in X to use same protocol as initial request 
RewriteRule \.(gif|jpg|jpeg|jpe|png|ico|css|js)$ - [S=1] 

# Use index.php as the controller 
RewriteCond %{REQUEST_URI} !\.(exe|css|js|jpe?g|gif|png|pdf|doc|txt|rtf|xls|swf|htc|ico)$ [NC] 
RewriteCond %{REQUEST_URI} !^(/js.*)$ 
RewriteRule ^(.*)$ index.php [NC,L] 

Quelqu'un at-il des suggestions sur la façon dont je peux forcer la connexion, inscrivez-vous et les pages de compte à https tout en forçant toutes les autres pages à ne pas être?

+0

Quelle URL déclenche les redirections Inifinite? Quelle est la sortie du journal de réécriture? – Artefacto

+0

Vous devez savoir que, par le serveur sait qu'ils sont sur une "autre" page, tout le travail acharné de SSL a été accompli, et le forcer à non-SSL est juste un travail supplémentaire. – Jumbogram

Répondre

1

Il semble que vous correspondiez à HTTPS = activé pour SSL et HTTPS = désactivé pour les connexions non cryptées.

Vous devez vérifier que la variable d'environnement HTTPS est définie comme prévu. Sinon, il y aura une redirection infinie - comme vous l'expérimentez.

Par exemple: https://issues.apache.org/bugzilla/show_bug.cgi?id=50581

Questions connexes