2010-02-18 8 views
2

Je souhaite rediriger toutes les connexions depuis htt_p: //www.example.com/abc.html vers HTTP_S: //www.example.com/abc.html. Quelles commandes mod_alias ou mod_rewrite fonctionneraient pour cela? J'ai essayé:Comment faire en sorte qu'Apache serve toujours une seule page via HTTPS?

RewriteEngine on 
RewriteCond %{HTTPS} =off 
RewriteRule $abc\.html^ https://www.example.com/abc.html [R] 

à la fois .htaccess et httpd.conf mais cela ne fonctionne pas. Cela fonctionne si la première chaîne de la RewriteRule est autre chose (comme abz.html) mais pas si elle est abc.html. abc.html est un vrai fichier sur le serveur (pas une autre redirection). Options FollowSymlinks est présent dans la directive Directory appropriée.

Merci beaucoup.

Répondre

1

Quelque chose le long des lignes de ce qui suit vous permettra de rediriger les pages non-SSL pour les versions SSL (en supposant que vous utilisez SSL sur le port 443):

RewriteEngine on 

# Limited redirects 
RewriteCond %{SERVER_PORT} !^443$ 
RewriteCond %{REQUEST_URI} ^/abc\.html$ [OR,NC] 
RewriteCond %{REQUEST_URI} ^/def\.html$ [OR,NC] 
RewriteCond %{REQUEST_URI} ^/ghi\.html$ [NC] 
RewriteRule ^/(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] 

Le drapeau [OR] après la RewriteCond est littéralement cela, "ou", ce qui explique pourquoi la dernière condition ne l'a pas

+0

Merci, mais cela ne résout pas le problème. Cela fonctionne en redirigeant /aBc.html de façon appropriée, mais pas abc.html. Il semble que si Apache voit le vrai fichier, il donne la priorité au vrai fichier sur toutes les instructions RewriteRule. Est-il possible de forcer à rediriger même si le fichier existe? Merci encore! – BuyTheBid

+0

Les réécritures ont préséance sur les fichiers réels, ce qui implique que les directives sont probablement au mauvais endroit pour leur format actuel. Où, en termes précis, avez-vous essayé ces réécritures (c'est-à-dire dans .htaccess du répertoire, dans Directory directive of config, dans la directive VirtualHost de config)? Aussi, pouvez-vous poster l'URL complète qui correspond et de même pour celui qui ne correspond pas? – Cez

+0

Ok ça marche maintenant. Juste le mettre dans mon httpd.conf a fait l'affaire. Je pense que le problème était que mes navigateurs mettaient en cache les anciennes pages. Merci pour votre aide, Cez! – BuyTheBid