La redirection HTTP vers HTTPS avec Apache
J'ai un problème lors de l'utilisation de mod_rewrite pour forcer la redirection des requêtes HTTP à HTTPS à l'aide de Apache 2.2.22 sur Ubuntu Server 12.04.
Mon /etc/apache2/sites-available/default fichier:
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
</VirtualHost>
Le HTTPS hôte est défini dans default-ssl dans le même répertoire.
Visite du serveur adresse IP locale, la redirection semble bien fonctionner. Cependant, l'accès via le nom de domaine complet, il ne le fait pas. En utilisant le nom de domaine complet, le site est disponible à port 5443, qui est mappé dans le pare-feu de 443 sur le serveur, donc peut-être qui a quelque chose à voir avec le problème. Je ne peux pas utiliser le port 443 directement, car elle est en cours d'utilisation sur cette adresse IP d'un autre serveur.
Pour préciser davantage, voici des liens valides:
https://website:5443
https://192.168.200.80:443
La redirection fonctionne ici:
http://192.168.200.80
Mais ce qui suit donne une 400 Bad Request, et c'est là que la redirection est nécessaire:
http://website:5443/
", Votre navigateur a envoyé une demande pour que ce serveur n'a pas pu comprendre.
Raison: Vous parlez de la plaine HTTP pour un SSL, le port du serveur.
Au lieu d'utiliser le HTTPS régime d'accéder à cette URL, s'il vous plaît."
- Cela semble être le chemin le plus long pour faire une chose simple, peut-être que vous avez une bonne raison pour ça, cependant. Dans anycase, vous devriez vérifier mod_proxy: httpd.apache.org/docs/2.0/mod/mod_proxy.html avec cette relative DONC, la question: stackoverflow.com/questions/1162375/apache-port-proxy.
Vous devez vous connecter pour publier un commentaire.
C'est tout à fait possible. La suite redirige tous http par l'url https.
assurez-vous de charger le module rewrite module mod_rewrite et de l'activer.
Votre problème ici, c'est l'initiale de la requête HTTP: Cela ne fonctionnera pas tant que le serveur ne comprennent pas la réception de la demande sur le port 443 (comme le code de réponse suggère).
Si aucun port n'est donné, le protocole
http
par défaut le port 80,https
sur le port 443.C'est aussi la raison pourquoi votre local de redirection fonctionne. Je parie que si vous accédez à la page grâce à
http://website/
(avec le bon port forwarding du port 80), il fonctionnera aussi bien. Notez également que votreVirtualHost
est défini uniquement pour le port 80 de toute façon, il ne sera pas valable pour les demandes envoyées àwebsite:5443
(ouwebsite:443
).En général, vous aurez besoin d'un serveur qui accepte à la fois les demandes HTTP et HTTPS sur un seul port. Pas sûr que n'importe quel serveur prend en charge quelque chose comme ça, parce que (je pense) pour l'essentiel, de viole les spécifications.
si tu veux rediriger votre site à partir de http://anything.example.com pour https: //anything.example.com ... il suffit de créer un hébergement dédié .conf le fichier /etc/httpd/conf.d/dédié.conf et autres conf fichier virtuel.conf ... des entrées pour dédié.conf sont comme suit....
c'est le serveur d'hébergement dédié conf fichier de redirection https...
Sinon comme mentionné dans le commentaire ci-dessous, nous pouvons utiliser la redirection aussi: