2010-06-10 5 views
1

J'essaie d'être plus sélectif dans quelles pages/requêtes utilisent SSL pour des raisons de performances. Je voudrais utiliser htaccess pour rediriger vers https:// pour seulement les pages requises et rediriger vers http:// pour tout le reste. Voilà ce que j'ai:SSL sélectif avec .htaccess force http: // ou https: //

RewriteEngine On 

# force https 
RewriteCond %{SERVER_PORT} !^443$ 
RewriteRule ^(.*)/(abc|xyz)(.*)$ https://%{HTTP_HOST}/$1/$2 [R=301,NC,L] 

RewriteCond %{SERVER_PORT} ^443$ 
RewriteCond %{HTTP_REFERER} !^https(.*)/(abc|xyz)(.*)$ [NC] 
RewriteCond %{REQUEST_URI} !^(.*)/(abc|xyz)(.*)$ [NC] 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,NC,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ initialize.php [QSA,L] 

Les demandes sécurisées sont censés être abc ou xyz. Le problème est que si http:// example.com/abc est demandé, il redirige vers http://example.com/initialize.php. Une page non sécurisée fonctionne comme prévu.

Répondre

0

Puisqu'il s'agit d'une question vieille de plusieurs années, je suis sûr que c'est déjà résolu, mais pour les gens qui pourraient en avoir, je pense que quelque chose comme ça pourrait fonctionner. Il est un peu difficile de savoir ce que abc et xyz est ci-dessus, mais je suppose qu'ils font partie du chemin URI.

# Forward some URI's to HTTPS. 
RewriteCond %{HTTPS} =off 
RewriteCond $1 (abc|xyz) [NC] 
RewriteRule ^(.+)$ https://%{HTTP_HOST}%{REQUEST_URI} [QSA,S=1,L] 

# Forward rest of the request to HTTP 
RewriteCond %{HTTPS} =on 
RewriteCond $1 !(abc|xyz) [NC] 
RewriteRule ^(.+)$ http://%{HTTP_HOST}%{REQUEST_URI} [QSA,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule^initialize.php [QSA,L] 

également les conseils pour résoudre ce serait de permettre mod_rewrite logging.

Questions connexes