URL rewrite gondok és kérdések
Sziasztok!
Pár napja kezdtem el ismerkedni az apache mod_rewrite-al, és sajnos akadt pár gondom, és kérdésem vele kapcsolatban.
Az első ötletemet egy teljesen egyszerű oldalon próbáltam ki, ahol csak az URL szépítése volt a lényeg. Nagyjából működik is a következő kóddal:Az itthoni, és távoli szerveren tökéletesen működik, azonban kipróbáltam egy harmadikon is, ahol sajnos nem ment. A gond a következő, 404-es hibával lehal, pedig a fájl igenis létezik.
example.org/sample.php esetén 404-es hibakód, és hogy /home/example.org/sample.php nem létezik, pedig ott van. kóddal pedig megy. hiányára gondoltam. Mellesleg hogy tudom megnézni milyen Options van az adott könyvtáron apache szinten? Meg hogy AllowOverride-nál mit engednek és mit nem? :)
A másik gondom, hogy az itthoni szerver kivételével rossz hivatkozás esetén 404-es hibával áll le, nálam pedig 400-as, Bad Request-el. Hogyan tudnám javítani?
Elég sok, weblaboros és egyéb doksit és fórumtémát olvastam vele kapcsolatban, semmi eredmény, de lehet csak én voltam nagyon bamba.
Segítségeteket előre is köszönöm!
■ Pár napja kezdtem el ismerkedni az apache mod_rewrite-al, és sajnos akadt pár gondom, és kérdésem vele kapcsolatban.
Az első ötletemet egy teljesen egyszerű oldalon próbáltam ki, ahol csak az URL szépítése volt a lényeg. Nagyjából működik is a következő kóddal:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^([a-zA-Z0-9-]+)$ $1.php
</IfModule>
example.org/sample.php esetén 404-es hibakód, és hogy /home/example.org/sample.php nem létezik, pedig ott van.
RewriteRule ^([a-zA-Z0-9-]+)$ /$1.php
Options FollowSymLinks
A másik gondom, hogy az itthoni szerver kivételével rossz hivatkozás esetén 404-es hibával áll le, nálam pedig 400-as, Bad Request-el. Hogyan tudnám javítani?
Elég sok, weblaboros és egyéb doksit és fórumtémát olvastam vele kapcsolatban, semmi eredmény, de lehet csak én voltam nagyon bamba.
Segítségeteket előre is köszönöm!
Ezt ajánlom
Próbáld ezzel, ez egy picit cizelláltabb megoldás:
Sajnos
A másik gond még mindig él, ugyanúgy "The requested URL /home/htdocs/.....hu/ada/sample.php was not found on this server." pedig ott van.
és rewrite nélkül?
Végülis
url != path
Nem tudom, Te hogy vagy vele, de én /home/htdocs könyvtárat nem a weboldalam "alatt" tartom, hanem esetleg a gyökérben...
(ha még mindig nem látnád:
http://www.teecee.hu/home/htdocs/index.php != /home/htdocs/index.php
URL != path
)
Eh
Vázolom megint a gondomat:
example.org/sample.php - fájl létezik. A fentebb említett Rewrite szabályok egyikével sem megy az example.org/sample hivatkozás. Hibaüzenetként a szintén fentebb említett választ kapom a szervertől.
Szóval
B
Pontosan
fura
Ha együttműködő a rendszergizda kérjél tőle egy RewriteLog fájlt valahova ahol látod...
Értem
Univerzális mod_rewrite szabály
Hosszas keresgélés után fordulok hozzátok:
egy olyan rewrite szabályt keresek, ami univerzálisan tudja átalakitani az url-t. Pl.
akarmi.hu/ertek1/ertek2/ ... /ertekn
alakú URL ből, ahol nincs előre megadva az értékek száma, olyat csinál, hogy:
akarmi.hu?param1=ertek1¶m2=ertek2....¶mn=ertekn
Csinált valaki már ilyet?
Előre is kösz a válaszokat!
Nem, mert butaság
Ha a konkrét esetről többet is elárulnál talán találunk megoldást.
Amúgy, ha jól látom, nem egy meglévő rendszert szeretnél átalakítani, hanem egy saját rendszerhez kéne a megoldás. Ha PHP-t használsz, miért nem darabolod fel egy tömbbe? $params = explode (" ", $_SERVER["REDIRECT_URL"]);
B
adtal egy jo otletet.
Örülök :)
Természetesen (a fenti sajtóhibával ellentétben) erre gondoltam:
$params = explode ("/", $_SERVER["REDIRECT_URL"]);