Portál AbcLinuxu, 10. května 2025 06:37

Dotaz: Pravidlo rewrite

1.10.2013 13:00 Marťas
Pravidlo rewrite
Přečteno: 291×
Odpovědět | Admin
Ahoj, poradí někdo zdatný s opravou tohoto řádku?
RewriteRule ^(.*)$ ?$1 [QSA,L]
potřebuji aby to dělalo následující, když zadám http://www.domain.ltd/foo/bar/new
echo $_GET[0] //foo
echo $_GET[1] //bar
echo $_GET[2] //new
Peru se s tím dva dny ale prostě to zapsat jedním řádkem nejde :-( Děkuji
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

1.10.2013 13:19 NN
Rozbalit Rozbalit vše Re: Pravidlo rewrite
Odpovědět | | Sbalit | Link | Blokovat | Admin
Takto ale prece HTTP GET pozadavek nevypada, nema to byt nejak takto:
RewriteRule ^/(.*)/(.*)/(.*)$ ?foo=$1&bar=$2&new=$3 [L]
1.10.2013 13:32 Marťas
Rozbalit Rozbalit vše Re: Pravidlo rewrite
Díky za odpověď, ano to má, ale nechtěl jsem zde uvádět tohle řešení, jelikož bych to chtěl napsat viz můj příklad jako univerzální pravidlo. používm něco jako
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)?/?/?/?/?/?$ ?0=$1&1=$2&2=$3&3=$4&4=$5&5=$6&6=$7&7=$8&8=$9 [L,QSA]
a problém je v tom, že každý web potřebuje jiný počet proměnných. Navíc tohle pravidlo zabere v .htaccess s devíti proměnnýma 35 řádků.
1.10.2013 13:52 NN
Rozbalit Rozbalit vše Re: Pravidlo rewrite
No tak potom bych to neprovadel rewritem, ale zpracovaval pomoci PHP rovnou tzn. vyhledal bych celou cestu a nasekal ji na promenne rovnou v kodu.
1.10.2013 14:12 Marťas
Rozbalit Rozbalit vše Re: Pravidlo rewrite
Teď nevím, jestli ti přesně rozumím, máš na mysli získat data z nějaké suporglobální proměnné jako je $_SERVER['foo'] a podle lomítek a explode() to nasekat do array?

Jestli ano, tak
1) nejsem si jistý, jestli je takový údaj vždy možné ze serveru získat..
2) musel bych to pole předávat všem class či funkcím, což si myslím, že je škoda
Opravdu by to nešlo dostat do superglobální proměnné? Byla by to velká prasárna to udělat jak popisuješ a result uložit do $_GET ? Díky
1.10.2013 16:35 Sten
Rozbalit Rozbalit vše Re: Pravidlo rewrite
  1. Je
  2. $_GET = explode($_SERVER['foo']); ;-)
1.10.2013 17:05 Marťas
Rozbalit Rozbalit vše Re: Pravidlo rewrite
No a není to prasárna? ;-) Ihmo, pokud to udělám takto, stejně musím něco někde nastavit, jelikož při zadání url
http://www.foo.bar/jedna/dve/honza/jde
dostanu, že stránka neexistuje, což je pochopitelné, jelikož hledá fyzické adresáře... ovšem nevím jak to ošetřit.. Díky
1.10.2013 17:14 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Pravidlo rewrite
RewriteRule ^(.*)/$ index.php?mod-auto-rewrite=$1 [L,QSA]
$_MYGET = explode( '/', $_GET['mod-auto-rewrite'] );
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
1.10.2013 17:15 Sten
Rozbalit Rozbalit vše Re: Pravidlo rewrite
RewriteRule .* /index.php [QSA]

Prasárna? No jak se to vezme. Většina pokročilejších (ne-PHP) jazyků tenhle přístup používá.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.