Redirection Apache http vers https

157

Environnement Centos avec Apache

Essayer de configurer la redirection automatique de http vers https

From manage.mydomain.com --- To ---> https://manage.mydomain.com 

J'ai essayé d'ajouter ce qui suit à mon httpd.conf mais cela n'a pas fonctionné

 RewriteEngine on
    ReWriteCond %{SERVER_PORT} !^443$
    RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]

Des idées?

Deano
la source

Réponses:

210

J'ai effectivement suivi cet exemple et cela a fonctionné pour moi :)

NameVirtualHost *:80
<VirtualHost *:80>
   ServerName mysite.example.com
   Redirect permanent / https://mysite.example.com/
</VirtualHost>

<VirtualHost _default_:443>
   ServerName mysite.example.com
  DocumentRoot /usr/local/apache2/htdocs
  SSLEngine On
 # etc...
</VirtualHost>

Alors fais:

/etc/init.d/httpd restart

Deano
la source
7
Notez que ceci n'est disponible que si vous avez accès au fichier VirtualHost. C'est la méthode recommandée.
foochow
4
Après avoir modifié cela sur httpd.conf, redémarrez le serveur Web Apache. afin qu'il reflète et efface également le cache de votre navigateur.
Suriyan Suresh
2
Je voudrais signaler que cette méthode n'a pas fonctionné pour moi avec Ubuntu 12.4, mais la réponse proposée par RewriteEngine a fait l'affaire.
Deano
2
devez-vous faire un redémarrage? un rechargement est beaucoup moins destructeur et apportera le nouveau fichier de configuration. /etc/init.d/httpd reload|| service httpd reload
Rebecca Dessonville le
3
puisque le but était de le rediriger vers le mode ssl, la ligne DocumentRoot /usr/local/apache2/htdocsn'est plus nécessaire
Abel Callejo
130
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}

http://www.sslshopper.com/apache-redirect-http-to-https.html

ou

http://www.cyberciti.biz/tips/howto-apache-force-https-secure-connections.html

IdemeNaHavaj
la source
3
C'est une meilleure solution que celle approuvée, car elle fonctionne même si vous êtes derrière un déchargeur SSL comme Pound ou BigIP. Ces déchargeurs passeront souvent tout le trafic sur le même port, et la solution approuvée ne fonctionnera pas dans ce cas spécifique
spiritoo
1
@spiritoo Pas si. La documentation Apache dit spécifiquement que c'est l'une de ces situations où vous ne devriez pas utiliser mod_rewrite et plutôt utiliser Redirect: httpd.apache.org/docs/2.4/rewrite/avoid.html
Luke Madhanga
4
@LukeMadhanga Apache docrecommands utilisant Redirect pour les performances. Mais quand même, la solution RewriteEngine est meilleure, dans le sens de plus générique, car elle fonctionne même dans le cas que j'ai décrit (déchargement). Le but de mon commentaire est de fournir à chaque utilisateur la clé pour choisir entre les deux réponses. Certains veulent des procédures génériques (gros corps), d'autres veulent des performances ... c'est un choix libre.
spiritoo
20
C'est génial, cependant, si vous voulez le rendre plus grand, ajoutez ceci [R = 302, L, QSA] afin que tous les paramètres soient également passés à la page sécurisée. Cela devrait ressembler à:% {REQUEST_URI} [R = 302, L, QSA]
Svetoslav Marinov
J'ai utilisé ces lignes et lorsque j'essaye de charger la page, la réponse est "Impossible de charger la ressource: net :: ERR_CONNECTION_REFUSED". Qu'est-ce que je fais mal?
Serkan
98

Cherché apache redirect http to httpset atterri ici. Voici ce que j'ai fait sur ubuntu:

1) Activer les modules

sudo a2enmod rewrite
sudo a2enmod ssl

2) Modifiez la configuration de votre site

Modifier le fichier

/etc/apache2/sites-available/000-default.conf

Le contenu doit être:

<VirtualHost *:80>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile    <path to your crt file>
    SSLCertificateKeyFile   <path to your private key file>

    # Rest of your site config
    # ...
</VirtualHost>

3) Redémarrez apache2

sudo service apache2 restart
Jossef Harush
la source
Travaillez avec Ubuntu 16.04 et Apache2. Merci!
Sylvester Yao le
11

En fait, votre sujet appartient à https://serverfault.com/ mais vous pouvez toujours essayer de vérifier ces directives .htaccess :

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*) https://%{HTTP_HOST}/$1
5 serviteur
la source
11

L'utilisation de mod_rewrite n'est pas la méthode recommandée à la place, utilisez l'hôte virtuel et la redirection.

Au cas où, si vous êtes enclin à utiliser mod_rewrite:

RewriteEngine On
# This will enable the Rewrite capabilities

RewriteCond %{HTTPS} !=on
# This checks to make sure the connection is not already HTTPS

RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
# This rule will redirect users from their original location, to the same 
location but using HTTPS.
# i.e.  http://www.example.com/foo/ to https://www.example.com/foo/
# The leading slash is made optional so that this will work either in
# httpd.conf or .htaccess context

Référence: Httpd Wiki - RewriteHTTPToHTTPS

Si vous recherchez une redirection permanente 301, l'indicateur de redirection doit être comme,

 R=301

donc la RewriteRule sera comme,

RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]
Vincy
la source
6

Si vous avez Apache2.4 vérifiez 000-default.conf- supprimez DocumentRootet ajoutez

Redirect permanent / https://[your-domain]/
indifférence
la source
5

Version du serveur: Apache / 2.4.29 (Ubuntu)

Après de longues recherches sur le web et dans la documentation officielle d'apache, la seule solution qui a fonctionné pour moi est venue de /usr/share/doc/apache2/README.Debian.gz

To enable SSL, type (as user root):

    a2ensite default-ssl
    a2enmod ssl

Dans le fichier /etc/apache2/sites-available/000-default.conf ajoutez le

Rediriger "/" " https://sub.domain.com/ "

<VirtualHost *:80>

    #ServerName www.example.com
    DocumentRoot /var/www/owncloud
    Redirect "/" "https://sub.domain.com/"

C'est tout.


PS: Si vous souhaitez lire le manuel sans extraire:

gunzip -cd /usr/share/doc/apache2/README.Debian.gz
DimiDak
la source
3

Cela a fonctionné pour moi:

RewriteCond %{HTTPS} =off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L,R=301]
Fint
la source
3

Ce code fonctionne pour moi.

# ----------port 80----------
RewriteEngine on
# redirect http non-www to https www
RewriteCond %{HTTPS} off
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://www.%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]

# redirect http www to https www
RewriteCond %{HTTPS} off
RewriteCond %{SERVER_NAME} =www.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]

# ----------port 443----------
RewriteEngine on
# redirect https non-www to https www
RewriteCond %{SERVER_NAME} !^www\.(.*)$ [NC]
RewriteRule ^ https://www.%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]

user7817632
la source
2

Veuillez essayer celui-ci dans la configuration Apache Virtualhosting, puis rechargez le service Apache

RewriteEngine On

RewriteCond %{HTTPS} off


RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}
MD IRFAN
la source
-1

J'en avais besoin pour quelque chose d'aussi simple que de rediriger tout le httptrafic de la page d'accueil par défaut d'Apache sur mon serveur vers une autre https.

Comme je suis encore assez vert en ce qui concerne la configuration d'Apache, je préfère éviter d'utiliser mod_rewritedirectement et j'ai plutôt opté pour quelque chose de plus simple comme celui-ci:

<VirtualHost *:80>
  <Location "/">
     Redirect permanent "https://%{HTTP_HOST}%{REQUEST_URI}"
  </Location>
</VirtualHost>

<VirtualHost *:443>
  DocumentRoot "/var/www/html"
  SSLEngine on
  ...
</VirtualHost>

J'aime cela parce que cela m'a permis d'utiliser des variables apache et de cette façon, je n'ai pas eu à spécifier le nom d'hôte réel car il s'agit simplement d'une adresse IP sans nom de domaine associé.

Références: https://stackoverflow.com/a/40291044/2089675

smac89
la source