Autor Zpráva
Lukša
Profil *
Zdravím,
mám problém s mod_rewrite. Potřebuji udělat pravidlo aby se adresa domena.cz/index.php?id=test přesměrovala na domena.cz/test a následně se podstrčil obsah adresy domena.cz/index.php?id=test. Momentální stav je takovýto:

  RewriteCond %{REQUEST_URI} ^/index\.php$
  RewriteCond %{QUERY_STRING} ^id=(.+)$
  RewriteRule ^index\.php$ http://www.domena.cz/%1? [R=301,L]

  RewriteCond %{REQUEST_URI} !^/index\.php$
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule (.+) index.php?id=$1 [L]

Doufal jsem, že takto to bude fungovat a nebude se to cyklit (protože v prvním pravidle mám REQUEST_URI = X a v druhém REQUEST_URI != X. Ono se to ale bohužel cyklí. Jediným vysvětlením co mě napadá je to, že ve chvýli, kdy se to dostane do spodního pravidla se asi provede HTTP požadavek, který opět spustí to první pravidlo.

Cílem tedy je, aby se nedalo dostat na tu "škaredou" adresu (přesměrovalo se to na pěknou) ale podstrčila se pro zpracování ta škaredá. Kde dělám chybu?
Našel jsem proměnnou IS_SUBREQ a zkoušel jsem ho testovat, ale nedařilo se.
Kajman
Profil
Jako první řádek spíše dejte
RewriteCond %{ENV:REDIRECT_STATUS} =""

Nebo na řádku 7 přidejte do query stringu něco navíc, aby to pak nevyhovovalo podmínce na řádku 2
RewriteRule (.+) index.php?rw=1&id=$1 [L]
Lukša
Profil *
Letmo jsem vyzkoušel a vypadá to dobře. Ta druhá možnost mě napadla, ale to mě přišlo takové nečisté :/
Prozkoumám detailněji a dám vědět. Prozatím děkuji :)
Lukša
Profil *
Tak to vypadá funkčně. Díky moc Kajmene :)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0