Autor Zpráva
david
Profil
Zdravím

Mám problém s tímto obsahem souboru .htaccess:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^*
RewriteRule ^/(.*)/(.*)/denik /vypis.php?ss=2&pismeno=$1&denik=$2 [L,QSA]
RewriteRule ^/(.*)/(.*)/vypis/ /vypis.php?ss=2&pismeno=$1&denik=$2 [L,R=301,QSA]

RewriteCond %{HTTP_HOST} ^/(.*)/[a-zA-Z]*/(.*)/
RewriteRule ^/(.*)/(.*)/(.*)/ /vypis.php?ss=$1&pismeno=$2&denik=$3 [L,QSA]

RewriteCond %{HTTP_HOST} ^/(.*)/\d*/(.*)/
RewriteRule ^/(.*)/(.*)/(.*)/ /clanek.php?tit=$3&ss=$2&id_sekce=$1[L,QSA]

První podmínka funguje bezvadně. Druhá a třetí se však neprovádí. Rozdíl mezi druhou a třetí je ten že druhou chci uplatňovat jen na URL adresy kde za druhým lomítkem jsou písmena, zatím co u třetí podmínku chci uplatňovat jen na URL adresy kde za druhým lomítkem jsou číslice.

Víte někdo kde může být zakopaný pes?

díky

P.S. neznáte nějaký free hosting kde bych mohl sám nahrávat soubor .htaccess?
Hugo
Profil
No ja si myslim, ze ta prvni podminka by mela byt na poslednim miste, protoze se vztahuje na vsechny adresy.


Na webzdarma .jde htaccess nahravat na server.
Yuhů
Profil
nebo by mohlo stačit z té první sady pravidel umazat ta eLka, to [L] myslím znamená konec zpracování všech pravidel, ale nevím, jestli by to stačilo.
Kajman
Profil *
HTTP_HOST je holá adresa servu, takže je nesmyl tam dělat pomínky na žádanou cestu.

Takže ty a-z a číslice hodit do RewriteRule a Smazat všechny RewriteCond, protože takhle nedávájí žádý smysl.
david
Profil
Díky za pomoc

Po odladění perfektně funguje toto:

RewriteCond %{HTTP_HOST} ^
RewriteRule ^(.*)/([a-zA-Z]*)/(.*)$ /vypis.php?ss=$1&pismeno=$2&denik=$3 [L,QSA]

RewriteCond %{HTTP_HOST} ^
RewriteRule ^(.*)/(\d*)/(.*)$ /clanek.php?tit=$3&ss=$2&id_sekce=$1[L,QSA]

RewriteCond %{HTTP_HOST} ^
RewriteRule ^/(.*)/(.*)/denik /vypis.php?ss=2&pismeno=$1&denik=$2 [L,QSA]
RewriteRule ^/(.*)/(.*)/vypis/ /vypis.php?ss=2&pismeno=$1&denik=$2 [L,R=301,QSA]

Jen nevím jak oštřit diakritiku. Mohu mít například URL:
www.domena.cz/1/Š/clanek
to ovšem nefunguje :(
Mordae
Profil
Místo [a-zA-Z] dát třeba [^0-9].
Kajman
Profil *
Vyhoď ty podmínky RewriteCond, jsou tam na prd. Ty se používají na jiné podmínky, než na testování adresy požadovaného dokumentu. Jsou tu tedy naprosto zbytečné. To by mě zajímalo, proč to tam každý nesmyslně cpe.

Takhle by to nešlo?

RewriteRule ^/(.*)/(.*)/denik /vypis.php?ss=2&pismeno=$1&denik=$2 [L,QSA]
RewriteRule ^/(.*)/(.*)/vypis/ /vypis.php?ss=2&pismeno=$1&denik=$2 [L,R=301,QSA]
RewriteRule ^(.*)/(\d*)/(.*)$ /clanek.php?tit=$3&ss=$2&id_sekce=$1[L,QSA]
RewriteRule ^(.*)/(.*)/(.*)$ /vypis.php?ss=$1&pismeno=$2&denik=$3 [L,QSA]
david
Profil
Reakce na Kajmana:

Řekl bych, že strašně málo lidí ví, že ty podmínky nejsou povinné. Chybí jednoduchá příručka k mod_rewrite. Oficiální dokumentace se těžko stravuje a jakékoli jiné návody co jsem našel jsou strašně primitvní.

Pokud by někdo napsal seriál článku na toto téma určitě by tím potěšil hodně webmasterů.
Toto téma je uzamčeno. Odpověď nelze zaslat.