Autor | Zpráva | ||
---|---|---|---|
simka00 Profil |
#1 · Zasláno: 8. 1. 2006, 11:50:04
RewriteEngine On toto podstrčí "neco/123" souboru "skript.php?x=123". jenže jak udělám, aby funguvalo i "neco/123?par=456" => "skript.php?x=123&par=456"? PS: myslím si, že by nebylo ke škodě založit samostatné téma mod_rewrite |
||
halogan Profil |
#2 · Zasláno: 8. 1. 2006, 12:10:05
RewriteRule ^neco/([0-9]+)(:?\?par=([0-9]+))? /index.php?x=$1&par=$2 [L,QSA] Funguje v poradku, otestovano. |
||
koudi Profil |
#3 · Zasláno: 8. 1. 2006, 12:12:10
nejsem si jistej, ale zkus tam dát [QSA]
|
||
Medhius Profil |
#4 · Zasláno: 8. 1. 2006, 12:14:22
Nešlo by to takhle?
RewriteRule ^neco/(.*)(\?*)(.*) /skript.php?x=$1&$2 |
||
halogan Profil |
#5 · Zasláno: 8. 1. 2006, 12:18:14
Medhius: Nezapominejte, ze * je libovolne opakovani, tedy i nulove, takze je lepsi pouzivat +.
|
||
halogan Profil |
#6 · Zasláno: 8. 1. 2006, 12:19:22
Medhius: A ten vas priklad by nesel, protoze 1) mate 3 zavorky, ale predavate jen dve promenne (cili ztracena data) 2) ? mate soucasti zavorky, takze se bude pamatovat a bude tam nadbytecny
|
||
Medhius Profil |
#7 · Zasláno: 8. 1. 2006, 12:29:24
halogan: Máte pravdu, měl jsem tam pár chyb. Udělal bych to spíš takto:
RewriteRule ^neco/([^?]*)(\?*)(.*) /skript.php?x=$1&$3 Pokud nebude druhý parametr uveden, zůstane na konci &, ale to ničemu nevadí. |
||
simka00 Profil |
#8 · Zasláno: 8. 1. 2006, 12:30:44
halogan
děkuji, funguje pro čísla. jenže jak to udělat, když proměnná par bude vždy číslo, ale v proměnné x se budou vyskytovat i písmena a pomlčky, možná i jiné znaky. |
||
Medhius Profil |
#9 · Zasláno: 8. 1. 2006, 12:35:26
simka00: Zkuste to co jsem psal já. Zatím co jsem zkoušel, tak to funguje.
|
||
halogan Profil |
#10 · Zasláno: 8. 1. 2006, 12:36:57
RewriteRule ^neco/(.+)(:?\?par=([0-9]+))? /index.php?x=$1&par=$2 [L,QSA] |
||
halogan Profil |
#11 · Zasláno: 8. 1. 2006, 12:38:24
Medhius: Jak mam porozumnet tomuto:
(\?*) Libovolny pocet otazniku? |
||
Medhius Profil |
#12 · Zasláno: 8. 1. 2006, 12:41:55
Ano, v našem případě Buď jeden nebo žádný. Když tam nebude žádný první závorka pohltí celý řetězec (to je ten první případ).
|
||
simka00 Profil |
#13 · Zasláno: 8. 1. 2006, 12:43:10
halogan
na to už jsem taky přišel, ale to mi napíše adresu index.php?x=spam&x=&par=123 - jde to ještě nějak upravit? |
||
Medhius Profil |
#14 · Zasláno: 8. 1. 2006, 12:45:51
Zkoušel jsem pomocí
echo preg_replace("~^neco/([^?]*)(\?*)(.*)~","/skript.php?x=\\1&\\3",'neco/ 32-6?par=46'); a to vyhodí /skript.php?x=32-6&par=46 Pravda je, že v htaccessu jsem to přímo nezkoušel. Možná to dělá něco jiného. |
||
halogan Profil |
#15 · Zasláno: 8. 1. 2006, 12:46:26
Medhius: Tak od toho je ale ?, nikoliv *.
|
||
Medhius Profil |
#16 · Zasláno: 8. 1. 2006, 12:47:43
Ano, máte pravdu. Obojí však funguje.
|
||
halogan Profil |
#17 · Zasláno: 8. 1. 2006, 12:57:46
Medhius: Je to sice otazka milisekund, ale pri vetsi zatezi to muze byt znat. Nechapu duvod, proc pouzivat *, kdyz se k tomu pouziva otaznik. Pak kdyz nekdo zada /foo/123/??????bar=foo, tak to neni korektni.
RewriteRule ^neco/(.+)\??(.*) /index.php?x=$1$2 [L,QSA] |
||
Medhius Profil |
#18 · Zasláno: 8. 1. 2006, 13:01:52
Ano, máte úplnou pravdu. Ten Váš způsob je samozřejmě korektnější i efektivnější.
|
||
simka00 Profil |
#19 · Zasláno: 8. 1. 2006, 13:09:07
Medhius
halogan kde jste se to naučili? |
||
halogan Profil |
#20 · Zasláno: 8. 1. 2006, 13:15:23
simka00: Regularni vyrazy z PCRE serialu na Interval.cz a mod_rewrite ani nevim, rekl bych ze apache.org a tady z fora, ale zakladem jsou regexpy.
|
||
Kajman_ Profil * |
#21 · Zasláno: 8. 1. 2006, 13:17:44
V rewriterule se nedá testovat query string, takže diskuse o rozdělení výrazu i s query stringem je bezpředmětná.
K původní otázce - stačí přidat uváděný příznak QSA (nejlépe i s L). |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0