ugrás a tartalomhoz

mod rewrite probléma

huveges · 2007. Május. 3. (Cs), 17.51
Az alábbi a htaccess fájlom tartalma:

RewriteEngine on
RewriteBase /
RewriteRule ^(.*)ident\/([^\/]*)\/(.*)$ /$3

Amit én szeretnék, az az, hogy az ident/valami/ mindig benne legyen az urlben, és az utánna következő rész lenne az elérési út. Ezt a valami -t szeretném használni a későbbiekben.

Most erre úgy működik nekem apache, hogy amint rákattintok egy ilyen url-re, akkor átdob egy olyan oldalra, amiből ez ki van hagyva. Ha jól gondolom akkor ennek nem így kellene működnie, de nem tudom, miért csinálja.

Pl: localhost/ident/valami/module/login -ra kattintok, és itt találom magam: localhost/module/login

Köszi előre is a segítséget.

Üdv!
Norbert
 
1

Relatív útvonal

vbence · 2007. Május. 3. (Cs), 18.34
A RewriteBase nem kötelező, de ha megadtad, gondold végig, hogy mit csinál. A / könívtárhoz viszonyítva kapod meg az elérési utat (ezenkívül a rewrite amúgy sem a hostnévvel kibővített URL-el dolgozik).

Ha a gyökérben van elhelyezve a cuccod, akkor nem kell a RewriteBase, de ha kedveled, használhatod is:
RewriteEngine on
RewriteRule ^ident/[^\/]*/(.*) $1
Ha .* -gal kezded a RegEx-et, akkor amúgy is megzabálja az egész URT-t, úgyhogy a kifejezés többi részének esélye sincs "lefutni". Azt a részét pedig nem kell zárójelbe tenned a kifejezésnek, amire nem hivatkozol (vagy egéb okból nem akarod csoportosítani). A mod_rewrite nem használ határolókat, úgyhogy a / nem speciális karakter. Nem kell escape-elned.

Úgy látom az alap apache rewrite doksit nem nézted át igazán. Ezt mindenképen javallanám.
2

kösz

huveges · 2007. Május. 3. (Cs), 19.08
Köszi a válaszodat.

Kipróbáltam amit írtál, de még mindig más url-en köt ki, mint ahova kattintok(az ident/valami/ elveszik). Nem lehet, hogy valami sunyi beállítás ez apache-ban?

Nézegetem doksit hátha találok valami okosságot.

Üdv!
Norbert
3

Mit kéne csinálnia?

vbence · 2007. Május. 3. (Cs), 19.27
Akkor írd le légyszives még1x, mi a cél, mert rosszul értettem. Ahogy én gondoltam: ident/akarmi utáni részt szeretnéd kiszolgálni, úgy, hogy az tudjon a valami-ról? pl:
/ident/valami/konyvtar/akarmi.php futtassa le a /konyvtar/akarmi.php-t. Az akarmi.php pedig megkapja a $_SERVER["REQUEST_URI"]-ban az eredeti URL-t.
4

upsz

huveges · 2007. Május. 3. (Cs), 19.36
Így van, ezt szeretném. Most, amúgy meggyógyult.
Eddig a link a /ident/valami/konyvtar volt, ezt lecseréltem /ident/valami/konyvtar/ -re. Biztos logikus, hogy így kell lennie, bár abban is látok fantáziát, hogy nem.

Köszi a segítséget.