http per https reindirizzamento apache


157

Environment Centos con apache

Tentativo di impostare il reindirizzamento automatico da http a https

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

Ho provato ad aggiungere quanto segue al mio httpd.conf ma non ha funzionato

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

Qualche idea?

Risposte:


210

In realtà ho seguito questo esempio e ha funzionato per me :)

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>

Quindi fa:

/etc/init.d/httpd restart


7
Nota che questo è disponibile solo se hai accesso al file VirtualHost. È il metodo raccomandato.
febbraio

4
Dopo averlo modificato su httpd.conf, riavvia il web server apache. in modo che rifletta e cancelli anche la cache del browser.
Suriyan Suresh,

2
Vorrei segnalare che questo metodo non ha funzionato per me con Ubuntu 12.4, tuttavia la proposta di risposta RewriteEngine ha funzionato.
Deano,

2
devi fare un riavvio? una ricarica è molto meno distruttiva e porterà al nuovo file di configurazione. /etc/init.d/httpd reload|| service httpd reload
Rebecca Dessonville,

3
poiché lo scopo era reindirizzarlo alla modalità ssl, la linea DocumentRoot /usr/local/apache2/htdocsnon è più necessaria
Abel Callejo

130
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}

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

o

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


3
Questa è una soluzione migliore di quella approvata, perché funziona anche se si è dietro un offloader SSL come Pound o BigIP. Questi offloader spesso passano tutto il traffico sulla stessa porta e la soluzione approvata non funzionerà in quel caso specifico
spiritoo

1
@spiritoo Non è così. I documenti di Apache affermano specificamente che questa è una di quelle situazioni in cui non dovresti usare mod_rewrite e dovresti piuttosto usare Redirect: httpd.apache.org/docs/2.4/rewrite/avoid.html
Luke Madhanga,

4
@LukeMadhanga Documenti di Apache che utilizzano Redirect per le prestazioni. Tuttavia, la soluzione RewriteEngine è migliore, nel senso di più generica, perché funziona anche nel caso che ho descritto (offloading). L'obiettivo del mio commento è fornire a ogni utente la chiave per scegliere tra le due risposte. Alcune persone vogliono procedure generiche (grandi corpi), altre vogliono prestazioni ... è una scelta libera.
spiritoo,

20
Questo è fantastico, tuttavia, se si desidera renderlo maggiore, aggiungere questo [R = 302, L, QSA] in modo che anche tutti i parametri vengano passati alla pagina protetta. Dovrebbe apparire come:% {REQUEST_URI} [R = 302, L, QSA]
Svetoslav Marinov,

Ho usato queste righe e quando provo a caricare la pagina, la risposta è "Impossibile caricare la risorsa: net :: ERR_CONNECTION_REFUSED". Che cosa sto facendo di sbagliato?
Serkan,

98

Cercato apache redirect http to httpsed atterrato qui. Questo è quello che ho fatto su Ubuntu:

1) Abilita i moduli

sudo a2enmod rewrite
sudo a2enmod ssl

2) Modifica la configurazione del tuo sito

Modifica file

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

Il contenuto dovrebbe essere:

<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) Riavvia apache2

sudo service apache2 restart

Lavora con Ubuntu 16.04 e Apache2. Grazie!
Sylvester Yao,

11

In realtà, il tuo argomento appartiene a https://serverfault.com/ ma puoi comunque provare a controllare queste direttive .htaccess :

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

11

L'uso di mod_rewrite non è il modo raccomandato invece usa l'host virtuale e il reindirizzamento.

Nel caso, se sei propenso a fare usando 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

Riferimento: Httpd Wiki - RewriteHTTPToHTTPS

Se stai cercando un reindirizzamento permanente 301, la bandiera di reindirizzamento dovrebbe essere come,

 R=301

quindi RewriteRule sarà come,

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

6

Se hai Apache2.4 seleziona 000-default.conf- rimuovi DocumentRoote aggiungi

Redirect permanent / https://[your-domain]/

5

Versione server: Apache / 2.4.29 (Ubuntu)

Dopo una lunga ricerca sul web e nella documentazione ufficiale di apache, l'unica soluzione che ha funzionato per me è arrivata da /usr/share/doc/apache2/README.Debian.gz

To enable SSL, type (as user root):

    a2ensite default-ssl
    a2enmod ssl

Nel file /etc/apache2/sites-available/000-default.conf aggiungere il file

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

<VirtualHost *:80>

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

Questo è tutto.


PS: se vuoi leggere il manuale senza estrarre:

gunzip -cd /usr/share/doc/apache2/README.Debian.gz

3

Questo ha funzionato per me:

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

3

Questo codice funziona per me.

# ----------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]


2

Prova questo nella configurazione di Virtualhosting di Apache e quindi ricarica il servizio Apache

RewriteEngine On

RewriteCond %{HTTPS} off


RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}

-1

Ne avevo bisogno per qualcosa di semplice come reindirizzare tutto il httptraffico dalla home page di apache predefinita sul mio server a quella pubblicata https.

Dato che sono ancora abbastanza verde quando si tratta di configurare apache, preferisco evitare di usarlo mod_rewritedirettamente e invece ho optato per qualcosa di più semplice come questo:

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

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

Mi piace perché mi ha permesso di utilizzare le variabili apache e in quel modo non ho dovuto specificare il nome host effettivo poiché è solo un indirizzo IP senza un nome di dominio associato.

Riferimenti: https://stackoverflow.com/a/40291044/2089675

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.