Autor Zpráva
koudelacek
Profil *
Na webu mám .htaccess nastaven takto:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/ page.php?id=$1
RewriteRule ^(.*)/(.*)/$ page.php?id=$1&sub=$2
pokud jsem na stránce bla.cz/neco/ - tak vše funguje
pokud najedu na stránku bla.cz/neco/neco2/ - tak $_GET['sub'] je spravne, ale $_GET['id'] = page.php
Nerozumím tomu, prosím o radu.
DJ Miky
Profil
První RewriteRule nemáš ukotvený na konec ($), takže zachytí i tvar /neco/neco2/. Případně můžeš ještě přidat oběma pravidlům příznak [L], který značí, že se adresa již dále nemá přepisovat ostatními pravidly. Příznaky se dávají na konec řádku s RewriteRule oddělené mezerou.

Mimochodem, RewriteCond se vztahuje jen k následujícímu RewriteRule, takže u druhého RewriteRule už neplatí podmínka neexistence. Navíc tam máš -f, což kontroluje existenci souboru s daným jménem, ale přepíše ti to existující adresáře s daným jménem.
koudelacek
Profil *
Noo připsal jsem tam ($), přidal jsem [L], ale na /neco/neco2/ se $_GET['id'] = neco/neco2 a $_GET['sub'] = 0..
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/$ page.php?id=$1 [L]
RewriteRule ^(.*)/(.*)/$ page.php?id=$1&sub=$2 [L]
koudelacek
Profil *
Vyřešeno.
Davex
Profil
koudelacek:
Vyřešeno.
Jak? Stačilo prohodit pořadí pravidel?
DJ Miky
Profil
Nebo by asi stačilo vyměnit (.*) za ([^/]*), aby pravidla nebrala lomítka.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0