ugrás a tartalomhoz

hosszu a link, RewriteRule nem valt be.

eaposztrof · 2007. Júl. 16. (H), 22.48
udv,

szepitgetnem kellene egy mar kesz oldalt, es a kovetkezo gondom akadt vele:

http://asd.asd/activity/factory/country/austria/language/german

ezt a linket a kovetkezo config generalja
RewriteRule ^activity/(.*)/country/(.*)/language/(.*).*$ index.php?page=activity/$1/country/$2/language/$3 [L]
ez az url nekem tul hosszu, valami ilyensmit szeretnek:
http://asd.com/asdc/austria/german

de! ami megakadalyoz, az az, hogy a php a link explodalasaval fuggvenyeket hiv meg es mysql_query-ket general

van valakinek otlete, h mit tudok tenni ez esetben?
valami alcan, virtualis megoldason gondolkodom, de nem jutok semerre..
 
1

Explode helyettesítés

tiny · 2007. Júl. 16. (H), 23.21
Nem tudom, hogyan is van ez, de talán egy lehetőség, hogy megvizsgálod, ha az asdc utáni rész egy ország (vagyis eleme egy országneveket tartalmazó tömbnek), akkor az eddig az explode-ból kinyert változó helyére beírod, hogy country. Ugyanígy a többinel.
2

valtozo neveket elhagyni?

zila · 2007. Júl. 17. (K), 11.11
Már le írtad (majdnem) a megoldást:

RewriteRule ^(.*)/(.*)/(.*).*$ index.php?page=activity/$1/country/$2/language/$3 [L]
Ebből ugye: http://example.com/factory/austria/german formátum lesz.
A php-ban meg a link szétbontását kell picit okosítani, hogy az első elem az activity, 2. az ország, 3. nyelv...
4

link szetbontasa..

eaposztrof · 2007. Júl. 17. (K), 14.56
epp ettol szeretnek megszabadulni.. sanos az egesz oldal az explode("/",$_SERVER['QUERY_STRING']) sorra epul.. :(
nagy munka lenne korrigalni.. ezert remenykedtem valami absolute virtualis megoldason...
5

munka nagysága

zila · 2007. Júl. 18. (Sze), 10.59
Nem tudom a méreteket, hány helyen van ez a szétbontás?
Nem úszod meg a kód átírását, hiszen ha az url-t parsolja és te az url-t változtatod meg, akkor rosszul fogja szétbontani.
Szerintem.
6

feladom! drupal.

eaposztrof · 2007. Júl. 18. (Sze), 13.06
bezony.. es abban remenykedtem h valakinek van valami hasznalhato otlete e teren..
de meg lett oldva: az egesz siteot atepitem drupalra. :) igy nem lesznek ilyen ondjaim tobbe.
3

Routing

kicsy · 2007. Júl. 17. (K), 13.48
Én egy config-fájl alapú megoldást használok (YAML):
admin-newsletter-activate:
  pattern:   /admin/newsletter/:action/:id/:key
  control:   frontend
  method:    route
  module:    newsletter
  params:
    action: { pattern: subscribe|describe }
    id: { pattern: [0-9]+ }
    key: { pattern: [a-z0-9]+ }
Ehhez egy helper-függvény generál linket:
^URI.link('admin-newsletter-activate: action = subscribe, id = 4, key = ..')

Ami megkeresi az admin-newsletter-activate részt, és behelyettesíti az action, id, key mezők értékét a mintába. Így lesz egy /admin/newsletter/subscribe/4/t3hf4h3kssn4.. link.
A felismerés reguláris kifejezésekkel történik, a mintában az :action, :id, :key mezőket a params részben megadott kifejezésekre cseérli a route modul, és ha illeszkedik az url a mintára, akkor a megfelelő controllert, modult nyitja meg, ha nem illeszkedik, akkor vizsgálja a config-fájl következő elemét.
A rewrite csak ennyiből áll:
RewriteRule ^([^/]+)/(.*)$ $1.php?url=$2 [QSA,L]
7

talan megoldas

eaposztrof · 2007. Júl. 18. (Sze), 13.20
ez tetszetos, de nem sokat ertek belole :)

most melaztam el azon, h mi lenne ha legeneralom az oldalt a

megtartom a kovetkezo url-t:
http://asd.asd/activity/factory/country/austria/language/german

errol redirectelek ennek a rovidebb verziojara:
http://asd.com/asdc/austria/german

es a php-ban a
explode("/",$_SERVER['QUERY_STRING']) sor helyett a
explode("/",$_SERVER['HTTP_REFERER']) -t hasznalom

nos? valaki ennek megvalositasara tippet? vagy h kivitelezhetoen hangzik e?
8

Kliens függő

zila · 2007. Júl. 18. (Sze), 13.31
A referer küldése kliens függő. Így arra alapozni nem életbiztosítás...
Wikipedia
9

Kód átírása

zila · 2007. Júl. 18. (Sze), 13.49
Nem értem még mindig, hogy miért nem akarsz a kódhoz nyúlni...

Ilyen linked lesz: http://asd.com/asdc/austria/german

$short_qs = explode("/",$_SERVER['QUERY_STRING');
$long_qs='activity/'.$short_qs[0].'/country/'.$short_qs[1].'/language/'.$short_qs[2];

// Ez volt a régi explode("/",$_SERVER['QUERY_STRING');
explode("/", $long_qs);

// változatlan kód innen...
Nyilván az eredti query stringet imitáló részt lehet okosan algoritmizálni, ha több paramétered van.