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 Answers
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.
Ještě dodám, že na webu je pro testovací účely použit nedůvěryhodný Wedos certifikát. Ale pro účely přesměrování by o snad vadit nemělo.