Přesměrování na HTTPS a WWW/non-WWW doménu
Zdravím,
snažím se pomocí úpravy .htaccess souboru nastavit přesměrování veškerého provozu na HTTPS verzi webu a zároveň na WWW nebo non-WWW doménu. A to nejen pro přístup na doménu, ale i pro všechny soubory či jiné atributy v URL.
Bohužel se mi to nedaří, vždy je někde mezera. Kontrolu provádím nástrojem https://www.seobility.net/en/redirectcheck/.
Zkoušel jsem všechno možné, ale nefunguje ani nastavení doporučené ve Wedos návodu. Vždy to nějaké requesty vynechá.
Dokázal by mi prosím někdo poradit?
# Turn on Rewrite Engine
RewriteEngine On
# Force HTTTPS
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Zkoušel jsem i použití hlaviček (viz generátor):
# Force HTTPS and remove WWW
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [OR,NC]
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP:X-Forwarded-Proto} !https [OR]
RewriteCond %{HTTP:X-Forwarded-SSL} !https
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
4 Odpověď
Dobrý den,
máme připravená tato pravidla, ale jsou tam hardcodované názvy domén.
RewriteEngine On
# přesměrování všech variant bez www na zabezpečenou variantu s www
RewriteCond %{HTTP_HOST} ^domena\.cz [NC]
RewriteRule (.*) https://www.domena.cz/$1 [R=301,QSA,L]
# přesměrování nezabezpečené varianty na zabezpečenou variantu s www
RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.domena.cz/$1 [R=301,L]
# přesměrování všech dalších nezabezpečených požadavků na zabezpečené
Header set Content-Security-Policy "upgrade-insecure-requests;"
Třeba se vám podaří z nich udělat proměnné, měly by fungovat stejně. Proměnná se mi osvědčila třeba tato:
%{SERVER_NAME}
Cílová by měla být nejlépe non-www doména s 301 přesměrováním, kvůli SEO. Testuji to na webíku r3gi.cz. Potřebuji, aby byly dostupné všechny kombinace, tj. např.
http://r3gi.cz
https://r3gi.cz
http://www.r3gi.cz
https://www.r3gi.cz
A zároveň obdobně i přístup k souborům, např.
http://r3gi.cz/GrumpyCat.png
…či k subdoménám a souborům pod nimi.
https://phpbb.r3gi.cz/
Pro snadnou kontrolu používám zmíněný Redirect checker.
Zkoušel jsem vše možné, ale vždy je alespoň jedna varianta, která je nepokryta. Ideálně bych to chtěl udělat dynamicky, bez zbytečného hardcodování názvů domén.
Díky,
toto je jedna z variant, kterou jsem zkoušel. Na první pohled vypadá, že by měla fungovat, avšak některé URL přesto směruje chybně.
Např.
https://r3gi.cz/GrumpyCat.png
vede na
https://r3gi.cz/GrumpyCat.png
dále
http://r3gi.cz/GrumpyCat.png
vede na
http://r3gi.cz/GrumpyCat.png
a
http://www.r3gi.cz/GrumpyCat.png
vede na
http://www.r3gi.cz/GrumpyCat.png
Viz přehledněji Redirect Checker.
Obsah (kořenového) .htaccess souboru je následující. Nic dalšího tam pro účely testů není.
# Turn on Rewrite Engine
RewriteEngine On
# Force WWW
RewriteCond %{HTTP_HOST} ^r3gi\.cz [NC]
RewriteRule (.*) https://www.r3gi.cz/$1 [R=301,QSA,L]
# Force HTTPS
RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.r3gi.cz/$1 [R=301,L]
# Force secure requests
Header set Content-Security-Policy "upgrade-insecure-requests;"
Aktuálně je na hostingu nasazen tento htaccess soubor, takže neváhejte testovat 🙂 Uvítám jakoukoliv radu. Už mi nějak dochází nápady.