Comment avez-vous redirection HTTPS en HTTP?
Question
Comment avez-vous redirection HTTPS en HTTP?.C'est, à l'opposé de ce que (presque) tout le monde apprend.
J'ai un serveur en HTTPS pour lequel j'ai payé une certification SSL et un miroir pour lesquelles je n'ai pas et conserver seulement pour les situations d'urgence afin de ne pas le mérite d'obtenir une certification pour.
Sur mon client ordinateurs de bureau, j'ai QUELQUES raccourcis qui pointent vers http://production_server
et https://production_server
(les deux fonctionnent).Cependant, je sais que si mon serveur de production va vers le bas, puis transfert DNS de coups de pied dans les clients qui ont "https" sur leur raccourci sera à regarder https://mirror_server
(qui ne fonctionne pas) et un big fat Internet Explorer 7 écran rouge de uneasyness pour mon entreprise.
Malheureusement, je ne peux pas il suffit de passer ce tour au niveau du client.Ces utilisateurs sont très rien à l'informatique:et sont très susceptibles de paniquer de voir HTTPS "l'insécurité" erreurs (en particulier la façon dont Firefox 3 et Internet Explorer 7 poignée de nos jours:L'ARRÊT COMPLET, genre de heureusement, mais ne m'aide ici LOL).
C'est très facile pour trouver Apache solutions pour http->https redirection, mais pour la vie de moi je ne peux pas faire l'inverse.
Des idées?
La solution
Cela n'a pas été testé, mais je pense que cela devrait fonctionner à l'aide de mod_rewrite
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}
Autres conseils
Gardez à l'esprit que le moteur de Réécriture seulement des coups de pied une fois la requête HTTP a été reçu, ce qui signifie que vous auriez encore besoin d'un certificat pour le client de configurer la connexion pour envoyer la demande plus de!
Toutefois, si la sauvegarde de la machine semble avoir le même nom d'hôte (dans la mesure où le client est concerné), il n'y a aucune raison que vous ne pouvez pas utiliser le même certificat que la principale machine de production.
Basé sur ejunker réponse, c'est la solution de travail pour moi, et non pas sur un seul serveur, mais sur un cloud de l'environnement
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{ENV:HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Pour ceux qui sont à l'aide d'un .conf
fichier.
<VirtualHost *:443>
ServerName domain.com
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/domain.crt
SSLCertificateKeyFile /etc/apache2/ssl/domain.key
SSLCACertificateFile /etc/apache2/ssl/domain.crt
</VirtualHost>
Si aucune des solutions ci-dessus le travail pour vous (pas pour moi), voici ce qui a fonctionné sur mon serveur:
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [L,R=301]
tous les ci-dessus ne fonctionne pas lorsque je l'ai utilisé cloudflare, celui-ci a fonctionné pour moi:
RewriteCond %{HTTP:X-Forwarded-Proto} =https
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
et celui-ci fonctionne sans proxies dans le chemin:
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Il est préférable d'éviter d'utiliser mod_rewrite quand vous le pouvez.
Dans votre cas, je voudrais remplacer le Réécrire avec ceci:
<If "%{HTTPS} == 'on'" >
Redirect permanent / http://production_server/
</If>
L' <If>
la directive est disponible uniquement dans Apache 2.4+ que par ce blog ici.
Aucune réponse fonctionne pour moi sur le site Wordpress, mais suite à des travaux ( il est similaire à d'autres réponses, mais ils ont un peu de changement)
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
cela fonctionne pour moi.
<VirtualHost *:443>
ServerName www.example.com
# ... SSL configuration goes here
Redirect "https://www.example.com/" "http://www.example.com/"
</VirtualHost>
<VirtualHost *:80>
ServerName www.example.com
# ...
</VirtualHost>
assurez-vous d'écouter à la fois les ports 80 et 443.
Pour autant que je suis conscient d'une simple actualisation des métafichiers fonctionne également sans provoquer des erreurs:
<meta http-equiv="refresh" content="0;URL='http://www.yourdomain.com/path'">