Jak przekierować http na https?

Wymusić przekierowanie z http na https w apache2 możemy na dwa sposoby:

Za pomocą .htaccess:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=permanent,L]

W pliku konfiguracji domeny http: (/etc/apache2/sites-available)

  • gdy mamy kilka domen:
<VirtualHost *:80>
    # tutaj moga byc inne rzeczy
    RewriteEngine On
    RewriteCond %{SERVER_NAME} =example.com [OR]
    RewriteCond %{SERVER_NAME} =www.example.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
</VirtualHost>
  • gdy mamy jedna domenę:
<VirtualHost *:80>
    # tutaj moga byc inne rzeczy
    RewriteEngine On
    RewriteCond %{SERVER_NAME} =example.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
</VirtualHost>

Zobacz też, jak włączyć mod_rewrite potrzebny do działania:

3 polubienia

też dodam 3 grosze

w katalogu znajduje się plik 000-default.conf w którym wykonujemy zmiany podane wyżej

ot tyle

1 polubienie

Ja do tego używam CloudFlare ale poradnik jak najbardziej przydatny :smiley:

[....] Starting web server: apache2Syntax error on line 34 of /etc/apache2/sites-enabled/000-default:
RewriteRule: unknown flag 'END'
Action 'start' failed.
The Apache error log may have more information.

Flaga END jest dostępna od Apache w wersji 2.3.9

Wniosek: przestarzała wersja :stuck_out_tongue:
Można spróbować zamiast END wpisać L, ale nie jestem pewny czy zadziała odpowiednio.

swoją drogą, naprawdę stara, bo u mnie jeszcze nigdy się nie trafił z tym problem

Powiesz mi jak zainstalować wyższą niż apache2? Dodać jakieś repozytoria?

Tak btw, “L” nie działa.

zwykłe apt-get update apt-get upgrade
nie pomaga? :v

Można też w cloudflare ustawić :smiley:

1 polubienie

To nie jest to samo, to jest zamienianie w treści, np mamy link do imgura czy czegoś podobnego po http, to zamieni na https. To całkiem co innego.

nie powinno byc czasem <VirtualHost *:443> skoro konkretnie chcemy SSL? Pytam, gdyz u siebie zawsze ustawiam 443 :stuck_out_tongue:

Wtedy wchodząc na serwer musiałbyś wpisywać https, a o to chodzi, żeby po wejściu na http przekierowało :wink:

To konfiguracja dla hosta http, nie https :wink:

no cóż, wole przekierować host http na host https :stuck_out_tongue: - zawsze jakaś alternatywa :wink:

Chyba nie rozumiem?

Właśnie tak to działa, w konfiguracji hosta http ustawiasz przekierowanie na ten https. :thinking:

2 polubienia

chodziło o moje rozwiązanie z portami :wink:

No ale port 433 jest dla https, jak chcesz nasłuchiwać http to robisz to na porcie 80. :thinking: