| Autor | Zpráva | ||
|---|---|---|---|
| Camo Profil |
Vitajte!
Mám takýto zápis, ktorý funguje: RewriteEngine on RewriteBase / RewriteRule (x*)x$ rewMod.php?item=$1 [L,NC] Ak teda zadám adresu domena.sk/xxx tak to prepíše na domena.sk/rewMod.php?item=xx A ja potrebujem vedieť, prečo keď RewriteRule prepíšem na: RewriteRule (x*)$ rewMod.php?item=$1 [L,NC] Nedáva mi to logiku:( Ak mi to vie niekto vysvetliť, tak vopred ďakujem... |
||
| Kajman Profil |
#2 · Zasláno: 18. 1. 2012, 22:58:08
Pak projde cokoliv i s prázdnou závorkou. Zkuste ^(x*)$
|
||
| Camo Profil |
Kajman:
„Pak projde cokoliv i s prázdnou závorkou. Zatiaľ sa to len učím, takže je jedno čo prejde. Problém je v tom, že to má prepísať adresu na rewMod.php?item=$1 A malo by to zachytiť všetko, čo sa končí na x. No a ono mi to síce podstrčí súbor rewMod.php, ale keď v tom súbore dám vypísať echo $_GET["item"] tak tam tie x-ká nie sú. A podľa mňa by tam mali byť. A ako som napísal, že keď to dám takto: (x*)x$ tak to funguje správne. Nechápem čo sa to tam deje... EDIT: Ale ^(x*)$ funguje správne ako pozerám. Len pochopiť by som to ešte potreboval... |
||
| Petr ZZZ Profil |
#4 · Zasláno: 19. 1. 2012, 11:28:16
Reaguji na Cama:
„Len pochopiť by som to ešte potreboval...“ Chápu-li vysvětlení na stránce o regulárech správně, potom ^ a $ vyznačuje začátek a konec hledaného řetězce, kulaté závorky zajistí opakování, x je x a hvězdička reprezentuje libovolný znak. Takže to hledá libovolný počet znaků x bez ohledu na opakování a na to, co za tím x následuje.
|
||
| Kajman Profil |
#5 · Zasláno: 19. 1. 2012, 15:43:14
Reguláry v mod_rewrite by měly být žravé (greedy), tak by měla hvězdička uzmout co nejvíc, co to jde, ale možná předtím uzme co nejvíc volná podmínka. Je možné, že to funguje trošku podivně. Jistější je napsat regulár tak, aby fungoval stejně při líném i žravém vyhodnocování.
Pro podrobnější pochopení zpracování rewrite pravidel může pomoci zapnutí rewrite logu. |
||
| Camo Profil |
Kajman:
Reguláry v mod_rewrite by měly být žravé (greedy), tak by měla hvězdička uzmout co nejvíc, co to jde Presne o to ide. A to je to čo nedáva zmysel. Lebo keď je to iba (x*)$ tak to vyzerá, že sa hľadá najkratší možný reťazec v tomto prípade prázdny. Ale keď napíšem (x*)x$ tak sa to naopak chová tak, že hľadá najdlhší možný reťazec teda že toľko x koľko tam napíšem, toľko aj dostanem. Ten rewriteLog sa mi nepodarilo rozchodiť... ale nemyslím, že by niečo zachytil, lebo to vyzerá ako korektné chovanie, len to asi nechápem... |
||
|
Časová prodleva: 15 let
|
|||
0