Autor Zpráva
imploder
Profil
Mám následující .htaccess soubor:
RewriteEngine on
RewriteBase /cesta/k/webu
RewriteRule ^(.*)$ index.php/$1 [L]

Při přístupu na URL, např.
http://example.com/cesta/k/webu/test
(předpokládejme, že web je na example.com) je výsledkem "500 Internal Server Error". Takže to nefunguje.


Funguje to, když dám před závorky další znak, např. x - takhle:
RewriteRule ^x(.*)$ index.php/$1 [L]

To se pak
http://example.com/cesta/k/webu/xtest
přesměruje správně na
http://example.com/cesta/k/webu/index.php/test


Můžete mi prosím poradit, kde je chyba?
DoubleThink
Profil *
Na 99.9% nekonečný cyklus přesměrování. Víc ti prozradí log serveru.
imploder
Profil
DoubleThink:
Dík, bylo to zacyklení. Měl jsem špatnou představu o tom, co dělá [L]: myslel jsem, že "ukončení přepisování" znamená, že už se v dalším kole mod_rewrite nepoužije, takže cyklení nehrozí.

Řešení:
RewriteCond %{REQUEST_FILENAME} !index\.php
RewriteRule ^(.*)$ index.php/$1 [QSA]


Správně by tam měla být celá cesta k souboru index.php, aby se to nerozbilo v případě, že jméno některého nadřazený adresáře bude obsahovat index.php. Potom by ale ta cesta nebyla na jednom místě v RewriteBase, takže na to kašlu. I nutnost psát cestu na to jedno místo se mi moc nelíbí, radši bych, aby se to nemuselo dělat (http://diskuse.jakpsatweb.cz/?action=vthread&forum=9&topic=118123).

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0