Přesměrování na HTTPS
Dobrý den.
Používám Váš hosting s administračním systémem WordPress.
Mám aktivovanou příplatkovou službu \“podpora HTTPS na doméně (SNI), podle toho návodu jsem nastavil doménu woodpecker-woodcrafts.com pro Let´s Encrypt certifikát. Následně jsem podle tohoto návodu upravil v administraci WordPress základní nastavení u instalace WordPressu na https://woodpecker-woodcrafts.com a úvodní stránku také na https://woodpecker-woodcrafts.com. Dosud vše fungovalo, stránky se zobrazovaly jako zabezpečené s https protokolem, přihlášení do administrace WordPress proběhlo bez problémů. Problém nastal v dalším kroku při úpravě souboru .htaccess.
Můj původní soubor .htaccess ve složce www/, který jsem upravoval, vypadal takto:
# htaccess rules for subdomains and aliases
# to create new subdomain, create a folder www/subdom/(subdomain name)
# to create web for alias, create a folder www/domains/(whole domain name)
# htaccess pravidla pro subdomeny a samostatne weby aliasu
# pro vytvoreni subdomeny vytvorte adresar www/subdom/(nazev subdomeny)
# pro vytvoreni webu pro alias vytvorte adresar www/domains/(cely domenovy nazev)
# dalsi info a priklady: http://kb.wedos.com/r/32/webhosting-htaccess.html
RewriteEngine On
# cele domeny (aliasy)
RewriteCond %{REQUEST_URI} !^domains/
RewriteCond %{REQUEST_URI} !^/domains/
RewriteCond %{HTTP_HOST} ^(www\\.)?(.*)$
RewriteCond %{DOCUMENT_ROOT}/domains/%2 -d
RewriteRule (.*) domains/%2/$1 [DPI]
# subdomeny (s nebo bez www na zacatku)
RewriteCond %{REQUEST_URI} !^subdom/
RewriteCond %{REQUEST_URI} !^/subdom/
RewriteCond %{HTTP_HOST} ^(www\\.)?(.*)\\.([^\\.]*)\\.([^\\.]*)$
RewriteCond %{DOCUMENT_ROOT}/subdom/%2 -d
RewriteRule (.*) subdom/%2/$1 [DPI]
# aliasy - spravne presmerovani pri chybejicim /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^domains/[^/]+/(.+[^/])$ /$1/ [R]
# subdomeny - spravne presmerovani pri chybejicim /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^subdom/[^/]+/(.+[^/])$ /$1/ [R]
Po provedených změnách dle návodu vypadal takto:
# htaccess rules for subdomains and aliases
# to create new subdomain, create a folder www/subdom/(subdomain name)
# to create web for alias, create a folder www/domains/(whole domain name)
# htaccess pravidla pro subdomeny a samostatne weby aliasu
# pro vytvoreni subdomeny vytvorte adresar www/subdom/(nazev subdomeny)
# pro vytvoreni webu pro alias vytvorte adresar www/domains/(cely domenovy nazev)
# dalsi info a priklady: http://kb.wedos.com/r/32/webhosting-htaccess.html
RewriteEngine On
# presmerovani HTTPS
RewriteCond %{HTTP_HOST} ^woodpecker-woodcrafts\\.com [NC]
RewriteRule (.*) https://www.woodpecker-woodcrafts.com/$1 [R=301,QSA,L]
RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.woodpecker-woodcrafts.com/$1 [R=301,L]
# cele domeny (aliasy)
RewriteCond %{REQUEST_URI} !^domains/
RewriteCond %{REQUEST_URI} !^/domains/
RewriteCond %{HTTP_HOST} ^(www\\.)?(.*)$
RewriteCond %{DOCUMENT_ROOT}/domains/%2 -d
RewriteRule (.*) domains/%2/$1 [DPI]
# subdomeny (s nebo bez www na zacatku)
RewriteCond %{REQUEST_URI} !^subdom/
RewriteCond %{REQUEST_URI} !^/subdom/
RewriteCond %{HTTP_HOST} ^(www\\.)?(.*)\\.([^\\.]*)\\.([^\\.]*)$
RewriteCond %{DOCUMENT_ROOT}/subdom/%2 -d
RewriteRule (.*) subdom/%2/$1 [DPI]
# aliasy - spravne presmerovani pri chybejicim /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^domains/[^/]+/(.+[^/])$ /$1/ [R]
# subdomeny - spravne presmerovani pri chybejicim /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^subdom/[^/]+/(.+[^/])$ /$1/ [R]
Po modifikaci souboru se nedokážu přihlásit do administrace wordpress, po zadání přihlašovacích újadů jsem přesměrován na stejnou stránku přihlášení. Vymazání veškerých cookies situaci nemění. Při zadání adresy webu se zobrazí chyba: smyčka při přesměrování. Zkusil jsem upravit .htaccess soubor přesně podle návodu výše. Výsledek vypadal takto:
# BEGIN WordPress
RewriteEngine On
RewriteCond %{HTTP_HOST} ^woodpecker-woodcrafts\\.com [NC]
RewriteRule (.*) https://www.woodpecker-woodcrafts.com/$1 [R=301,QSA,L]
RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.woodpecker-woodcrafts.com/$1 [R=301,L]
RewriteBase /
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Po této změně se při pokusu načtení stránky přihlášení do administrace wordpress zobrazí chyba 404 /index.php nenalezen na tomto serveru. Při zadání url stránky se zobrazí uvítací obrazovka Wedos – webhosting je aktivní. Po smazání souboru index.html ze složky www/ se situace nemění.
Poradíte mi, prosím, jak vyřešit tento problém? Děkuji
4 Odpověď
Dobrý den,
v kódu vidím jeden přebytečný znak \
Namísto RewriteCond %{HTTP_HOST} ^woodpecker-woodcrafts\\.com [NC] má být:
RewriteCond %{HTTP_HOST} ^woodpecker-woodcrafts\.com [NC]
Možná to bude ten problém.