HTACCESS

Redirection https vers http ou http vers https, redirection page sécurisée SSL/TLS

Il est parfois utile de pouvoir rediriger l'accès à des pages sécurisées vers la version non sécurisée. C'est utile pour éviter le duplicate content quand une même page est accessible via http et https. Pour les sites qui n'ont pas besoin d'être sécurisés il est même préférable de mettre en place la redirection https vers http (tout comme celle avec ou sans www déjà expliquée sur urlrewriting.fr). Il suffit d'un lien externe erroné pour qu'un robot de moteur de recherche indexe des pages qui ne devraient pas l'être. J'ai même eu le cas où cela générait des erreurs 500 et une surcharge du serveur à cause d'un bout de code qui n'avait pas prévu ce cas. 

De même il est parfois utile de rediriger des pages internet vers une version sécurisée. C'est particulièrement utile pour protéger certaines données sensibles comme lors d'un paiement en ligne. 

Pour détecter si la connexion est protégée par SSL/TLS nous pouvons utiliser la variable système HTTPS. Elle contient la chaine "on" ou "off". Une condition de réécriture permet de tester ces deux valeurs pour savoir dans quel cas nous nous trouvons. 

Le premier bout de code permet de faire une redirection permanente pour un accès aux pages avec https. Le deuxième lui marche dans l'autre sens et redirige les pages non sécurisés vers celles sécurisés. Il faut bien évidement choisir l'une des deux et ne pas les mettre ensemble car la boucle infinie est garantie ;). Il est par contre possible d'ajouter une condition supplémentaire pour ne rediriger que certaines pages.

RewriteEngine on

#redirection permanente https => http
RewriteCond %{HTTPS} ^on$ [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1  [R=301,L]

#redirection permanente http => https
RewriteCond %{HTTPS} ^off$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1  [R=301,L]
PHP