Nefungují přepisovací pravidla (mod_rewrite)
Příznaky
- Soubor .htaccess je umístěn v požadovaném adresáři, ale webový prohlížeč přepisovací pravidla ignoruje.
- Přepisovací pravidla cyklí nebo nejsou správně dokončena.
- Nefungují nice URL (čistá URL).
Možné příčiny
- Nemáte aktivovány soubory .htaccess.
- V .htaccess souborech není použita direktiva RewriteBase.
- V .htaccess souborech je použito přesměrování s relativní cestou v URL.
Řešení
- Ujistěte se, že máte aktivovány soubory .htaccess. Aktivaci provedete v administraci na stránce Služby → PHP → Aktivace .htaccess (mod_rewrite)
- Přesvědčte se, že máte v
.htaccess
souboru uvedenu direktivuRewriteBase /
- Při použití redirect (např. R=301) v souborech
.htaccess
používejte absolutní cestu v URL. Např. pravidlo:
RewriteCond %{REQUEST_URI} !\.[[:alnum:]]+$ RewriteRule ^(.+[^/])$ /$1/ [R=301]
přepište na:
RewriteCond %{REQUEST_URI} !\.[[:alnum:]]+$ RewriteRule ^(.+[^/])$ http://www.example.com/$1/ [R=301]
Absolutní URL je třeba v případě přesměrování použít vždy, neboť na serverech ONEbit.cz běží nad Apache servery proxy loadbalancer s možností přepínání verzí PHP, který již provádí přesměrování na vlastní backend servery (v případě použití relativní URL se pravidlo neaplikuje, resp. cyklí).
Další informace o mod_rewrite naleznete zde.