❗ přesměrování https wordpress/woocommerce ❗
Dobrý den,
řeším přesměrování v rámci shopu avason.cz, konkrétně varianty http na https a také všech variant www na bez www. Přesměrování fungovalo korektně, potíž je v tom, že systém po čase smaže vložené řádky v htaccesu mezi direktivami ‚BEGIN WordPress‘ a ‚END WordPress‘.
Vložil jsem proto pravidla nad tyto řádky, ale zjevně je někde chyba. Varianta přesměrování z www na variantu bez www je v pořádku, nikoliv však z http na https. Například domovskou stránku http://avason.cz přesměruje na https://avason.cz/domains/avason.cz/ (404)
Předem děkuji za rychlou pomoc.
Ondra
htaccess vypadá takto:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.avason\.cz [NC]
RewriteRule (.*) https://avason.cz/$1 [R=301,QSA,L]
RewriteCond %{HTTPS} off
RewriteRule (.*) https://avason.cz/$1 [R=301,L]
# BEGIN LSCACHE
# END LSCACHE
# BEGIN NON_LSCACHE
# END NON_LSCACHE
# BEGIN WordPress
# Direktivy (řádky) mezi ‚BEGIN WordPress‘ a ‚END WordPress‘ jsou
# dynamicky generované a měly by být upravovány pouze pomocí filtrů WordPressu.
# Veškeré změny směrnic mezi těmito značkami budou přepsány.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
# BEGIN WP Performance Score Booster Settings
# Direktivy (řádky) mezi ‚BEGIN WP Performance Score Booster Settings‘ a ‚END WP Performance Score Booster Settings‘ jsou
# dynamicky generované a měly by být upravovány pouze pomocí filtrů WordPressu.
# Veškeré změny směrnic mezi těmito značkami budou přepsány.
# END WP Performance Score Booster Settings
# LBROWSERCSTART Browser Caching
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif „access 1 year“
ExpiresByType image/jpg „access 1 year“
ExpiresByType image/jpeg „access 1 year“
ExpiresByType image/png „access 1 year“
ExpiresByType image/x-icon „access 1 year“
ExpiresByType text/css „access 1 month“
ExpiresByType text/javascript „access 1 month“
ExpiresByType text/html „access 1 month“
ExpiresByType application/javascript „access 1 month“
ExpiresByType application/x-javascript „access 1 month“
ExpiresByType application/xhtml-xml „access 1 month“
ExpiresByType application/pdf „access 1 month“
ExpiresByType application/x-shockwave-flash „access 1 month“
ExpiresDefault „access 1 month“
</IfModule>
# END Caching LBROWSERCEND
5 Answers
Dobrý den,
aby nedocházelo k duplikování url, tak je potřeba aby tento kód byl v .htaccessu, který se nachází v /www/ a nikoliv /www/domains/domena.tld/
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Případně do toho původního .htaccessu použijte
RewriteCond %{HTTP_HOST} ^vase-domena\.tld [NC] RewriteRule (.*) https://www.vase-domena.tld/$1 [R=301,QSA,L] RewriteCond %{HTTPS} off RewriteRule (.*) https://www.vase-domena.tld/$1 [R=301,L]
Přesměrování stále nedělá, co má. Zkoušel jsem ještě využít pomoci pluginu Really Simple SSL, ovšem musel jsem od toho upustit z obavy o to, co celá akce může způsobit. Konkrétně plugin hlásí mj.:
The mixed content fixer could not be detected due to a cURL error: cURL error 28: Operation timed out after 5000 milliseconds with 0 bytes received. cURL errors are often caused by an outdated version of PHP or cURL and don’t affect the front-end of your site. Contact your hosting provider for a fix.
translator:
Oprava smíšeného obsahu nemohla být detekována kvůli chybě CURL: chyba CURL 28: Časový limit operace vypršel po 5 000 milisekundách s přijetím 0 bajtů. Chyby CURL jsou často způsobeny zastaralou verzí PHP nebo CURL a neovlivňují rozhraní front-end vašeho webu. Opravu kontaktujte svého poskytovatele hostingu.
Dobrý den,
mě osobně Váš web přesměruje na https, nicméně můžete vyzkoušet také
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
nebo
RewriteCond %{HTTP_HOST} ^vase-domena\.tld [NC] RewriteRule (.*) https://www.vase-domena.tld/$1 [R=301,QSA,L] RewriteCond %{HTTPS} off RewriteRule (.*) https://www.vase-domena.tld/$1 [R=301,L]
Děkuji za odpověď. Přesměrování funguje podle mě jen pro domovskou stránku a taky jen občas (už to je divné, mazání cache mi přijde nemá vliv), ale zkuste si dát například adresu http://avason.cz/kategorie/kosmetika … přesměrovává na https://avason.cz/domains/avason.cz/kategorie/kosmetika. Řeším s Vašimi kolegy obecně také žalostnou rychlost stránek a jednou z možných příčin je právě přesměrování, které má být přes htaccess, aby doba provádění byla co nejmenší (viz https://help.wedos.cz/otazka/rychlost-stranek-2/14667/). Tohle je zcela zásadní a urgentní věc. Potřebuji proto s tímto poradit, kde je chyba. Když se podíváte na nynější htaccess, pak jsem přidal uvedené pravidlo pod řádek RewriteEngine on:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Zkuste mrknout na pingdom.com
Zde je také vidět, jak dochází k nesmyslnému přesměrování končícímu odpovědí 404