Autor Zpráva
meca
Profil
Omlouvám se, že zakládám zase nové téma o mod_rewritu, ale tenhle dotaz je as trochu z jiný planety...

Mám tyto dvě pravidla...

RewriteRule ^linkvillage/l-(.*)\.html$ linkvillage/index.php?page=$1 [L,QSA]
RewriteRule ^linkvillage/(.*)\.html$ linkvillage/index.php?page=odkazy&sekce=$1 [L,QSA]

... přišemž, když zadám adresu linkvillage/naka-sekce.html, tak mi vše funguje OK, ale když zadám linkvillage/l-stranka.html, tak se mě to snaží přepsat na to linkvillage/index.php?page=odkazy&sekce=l-stranka ... nevíte co s tim?

Vyzkoušel jsem snad úplně všechno... Teda, zkoušim to na localhostu, takže doufám, že není možný, že to tam mam něco špatně nastaveno či tak něco?

PS: Kdyby někdo náhodou věděl řešení, jak to udělat bez toho l-, tak budu rád ;)

Dík moc...
centi
Profil
Moc sa v mod_rewrite nevyznám, mám len taký nápad. Nestačilo by tie dve pravidlá zameniť? To všeobecné dať ako prvé a to konkrétnejšie ako druhé. Pretože teraz mi to pripadá tak, že aj keď zadáš l-stranka.html tak táto stránka vyhovuje prvému, ale aj druhému pravidlu a preto ho prepíše na druhý variant page=odkazy&sekce=$1.
Keby si to prehodil na

RewriteRule ^linkvillage/(.*)\.html$ linkvillage/index.php?page=odkazy&sekce=$1 [L,QSA]
RewriteRule ^linkvillage/l-(.*)\.html$ linkvillage/index.php?page=$1 [L,QSA]

tak hociaká stránka by vyhovovala prvému pravidlu. Stránka l-stranka.html však prvému, ale aj druhému pravidlu, ktoré by ju prepísalo do požadovanej formy.

Či to však pomôže netuším :-)
centi
Profil
Tak nie, teraz som to tvoje prepisovanie skúšal a ide mi to v poriadku. Teda ak som správne pochopil.
linkvillage/naka-sekce.html sa prepíše na linkvillage/index.php?page=odkazy&sekce=naka-sekce a

linkvillage/l-stranka.html sa prepíše na linkvillage/index.php?page=stranka.
Mordae
Profil
Chyba je v tom, že to druhé pravidlo je obecnější a tudíž se aplikuje i na to předchozí.
Co zkusit:
RewriteRule ^linkvillage/l-(.*)\.html$ linkvillage/index.php?page=$1 [L,QSA]
RewriteRule ^linkvillage/([^l]|l[^-])(.*)\.html$ linkvillage/index.php?page=odkazy&sekce=$1 [L,QSA]

Navíc netuším, na co potřebuješ QSA (Query String Append)
meca
Profil
Mordae
To tvoje funguje úplně stejně... :-/ ...

Ale už je fuk, sem to poslal na hosting a oni to tam nák zázračně nastavili, že to zase funguje...

A ještě teda, když už sem píšu ... Nevíte někdo, jesli by to šlo udělat, aby vlastně.. ehm..

RewriteRule ^linkvillage/(.*)\.html$ linkvillage/index.php?page=$1 [L,QSA]
RewriteRule ^linkvillage/(.*)\.html$ linkvillage/index.php?page=odkazy&sekce=$1 [L,QSA]

... To je asi nesmysl, co?
VitaZ
Profil
RewriteRule ^linkvillage/(.*)\.html$ linkvillage/index.php?page=$1 [L,QSA]
RewriteRule ^linkvillage/(.*)\.html$ linkvillage/index.php?page=odkazy&sekce=$1 [L,QSA]

... To je asi nesmysl, co?


To máš pravdu, je to nesmysl:-) Nastavuješ totiž pro jednu a tu samou stránku linkvillage/neco.html dvě různé hodnoty. V mod_rewrite jsem amatér a samouk, ale myslím, že to funguje takto:
Server dostane požadavek na nějakou statickou stránku ( linkvillage/neco.html ), která ve skutečnosti neexistuje. Ale server ví (má to přikázáno v souboru .htaccess), že když dostane požadavek na tuto stránku, má návštěvníkovi místo ní posunout dynamickou stránku linkvillage/index.php?page=prvnipromenna. A protože není nastaven parametr R=301 (v hranaté závorce, přibližně takto: [L,R=301,QSA]), zůstane v adresním řádku prohlížeče pořád statická adresa linkvillage/neco.html. Návštěvník i případný vyhledávací robot má dojem, že se dívá na skutečnou statickou stránku s příponou .html. Pokud by byl parametr R301 nastaven, došlo by k normálnímu přesměrování na správnou (dynamickou) adresu.

Zkusil jsem pro tvé dva případy použít
mod_rewrite generátor
a vyšlo mi něco takového:

1) případ: http://www.neco.cz/index.php?page=promenna1
RewriteRule ^index-(.*)\.html$ /index.php?page=$1 [L,QSA]
statická adresa by vypadala asi takto: [url=http://www.neco.cz/index-promenna1.html
]http://www.neco.cz/index-promenna1.html
[/url]

2) případ: http://www.neco.cz/index.php?page=promenna1&sekce=promenna2
RewriteRule ^index-(.*)-(.*)\.html$ /index.php?page=$1&sekce=$2 [L,QSA]
statická adresa by vypadala asi takto: [url=http://www.neco.cz/index-promenna1-promenna2.html
]http://www.neco.cz/index-promenna1-promenna2.html
[/url]

Celý zápis v .htaccess bude pak takový:
RewriteEngine on
RewriteRule ^index-(.*)\.html$ /index.php?page=$1 [L,QSA]
RewriteRule ^index-(.*)-(.*)\.html$ /index.php?page=$1&sekce=$2 [L,QSA]

Je potřeba to odzkoušet, ale stejnou věc jsem nedávno dělal a funguje bez problémů:-)
Toto téma je uzamčeno. Odpověď nelze zaslat.

0