Autor | Zpráva | ||
---|---|---|---|
meca Profil |
#1 · Zasláno: 10. 4. 2005, 10:37:25
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 |
#2 · Zasláno: 10. 4. 2005, 13:17:28 · Upravil/a: centi
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
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 |
#3 · Zasláno: 10. 4. 2005, 13:26:03
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 |
#4 · Zasláno: 12. 4. 2005, 20:24:49
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 |
#5 · Zasláno: 12. 4. 2005, 22:43:59
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 |
#6 · Zasláno: 12. 4. 2005, 23:47:20 · Upravil/a: VitaZ
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ů:-) |
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0