Barátságos URL, de nem mod_rewrite
Üdv!
Barátságos url-t kellene készítenem, a lehetõ leggyorsabban. Tudom, hogy a tökéletes megoldás az Apache mod_rewrite, de nincs rá lehetõségem és idõm, hogy olyat írjak.
Azt gondoltam, átnevezek minden fájlt kiterjesztés nélkülire, .htaccess-bõl rákényszerítem az Apache-ot, hogy PHP-ként értelmezze õket, ezen kívül lenne majd egy ErrorDocument 404 kezelõ a végén.
Na, a helyzet az, hogy van egy adatlap.php, ami két elemmel hívódik meg (jobb esetben), ezek alapján mySQL-bõl kérdezek le, és a visszatért adatok építik fel az oldalt, képeket tölt be, stb.
Az url így nézne ki: adatlap/szallas/nap+hotel.
Ebbõl az adatlap a kiterjesztés nélküli adatlap.php, az url többi része pedig ?caller=szallas&item=nap+hotel.
Csakhogy, a fenti esetben a képeket, css-t, a scriptet és mindent az adatlap/szallas/prog+hu+hotel mappából akar betölteni. (Ami persze nem létezik.)
Ezt hogy lehet kiküszöbölni? Tákolásos módszerrel minden src elé betudok szúrni egy "../../" stringet, de azért ez elég gáz lenne. Nem lehet betöltés után valahogy befolyásolni a REQUEST_URI-t?
Olvastam a cikket itt a weblaboron, de nem találtam választ benne. Egyébként valami hasonlót akarok megvalósítani, mint ami ott van, a mod_rewrite előtt.
Köszönöm a segítséget elõre is!
■ Barátságos url-t kellene készítenem, a lehetõ leggyorsabban. Tudom, hogy a tökéletes megoldás az Apache mod_rewrite, de nincs rá lehetõségem és idõm, hogy olyat írjak.
Azt gondoltam, átnevezek minden fájlt kiterjesztés nélkülire, .htaccess-bõl rákényszerítem az Apache-ot, hogy PHP-ként értelmezze õket, ezen kívül lenne majd egy ErrorDocument 404 kezelõ a végén.
Na, a helyzet az, hogy van egy adatlap.php, ami két elemmel hívódik meg (jobb esetben), ezek alapján mySQL-bõl kérdezek le, és a visszatért adatok építik fel az oldalt, képeket tölt be, stb.
Az url így nézne ki: adatlap/szallas/nap+hotel.
Ebbõl az adatlap a kiterjesztés nélküli adatlap.php, az url többi része pedig ?caller=szallas&item=nap+hotel.
Csakhogy, a fenti esetben a képeket, css-t, a scriptet és mindent az adatlap/szallas/prog+hu+hotel mappából akar betölteni. (Ami persze nem létezik.)
Ezt hogy lehet kiküszöbölni? Tákolásos módszerrel minden src elé betudok szúrni egy "../../" stringet, de azért ez elég gáz lenne. Nem lehet betöltés után valahogy befolyásolni a REQUEST_URI-t?
Olvastam a cikket itt a weblaboron, de nem találtam választ benne. Egyébként valami hasonlót akarok megvalósítani, mint ami ott van, a mod_rewrite előtt.
Köszönöm a segítséget elõre is!
abszolút cím?
Akár
CSS, stb
Most, hogy ezen túl vagyunk, lássuk a megoldást a rewrite-os problémára:
Remélem, sikerült alaposan körüljárni a témát.
Statikus fájlok kiszolgálása
Mint rendszergazda tudnád ismertetni, hogy mi jó a szervernek és hozhatnál jó, kevésbé jó és rossznak ítélhető példákat is, stb (pl. mi az ami még elmegy kis terhelésnél és mit csináljunk helyette, ha jön a nép).
Azt hiszem sokak számára érdekes és hasznos írás lenne.
404
Akkor, a történet második fele: 404 error esetén hogy tudom a felhasználót átirányítani tetszöleges fájlra?
Ha aposztrófok közé rakok szöveget a .htaccess fájlban, akkor müködik, de ha fájlnevet rakok oda, akkor nem.
Nem lehet, hogy be kell állítanom valamit az Apacheban?
ErrorDocument
base tag
Hát
Azért köszi, szerintem ezt most eléggé megjegyzem ahhoz, hogy legközelebb gondolkodás nélkül ezt használjam.
Hali, én a következőt
- htaccess-szel megoldva, hogy minden url esetén egy adott domain-en belül az index.php fusson le
- az index.php elemzi az url-et (www.valami.hu/hirek.html) és az alapján (hirek.html) pl. egy 'oldalak' nevű táblából kiolvassa a megfelelő tartalmat
- ha nincs adott url-ű rekord, akkor 404.html tartalma töltődik be
Szóval ennyi :)
Üdv! Már nagyjából minden úgy
Már nagyjából minden úgy működik, ahogy szerettem volna, egy apróságot leszámítva: ha nem .htaccess fájlból kezelem a 404-es hibát, hanem mondjuk mySQL-ből vissza adott érték alapján akarom eldönteni, hogy jó-e vagy nem a lekérés, ugyanúgy akarom az error.php-t megjeleníteni! Ha header location-el átirányítom, akkor a böngésző címsorában is átíródik az URL, míg .htaccess átirányításnál nem! Lehetséges a .php futása közben tetszőlegesen 404-es hibát kiváltani, és ha igen hogy? (Gondolom header-el, de mit írjak bele?)
A másik dolog, hogy ezt a .htaccess-t hogyan lehet rövidebbre szabni, egybe vonni a ForceType-okat?
<Files "index">
ForceType application/x-httpd-php
</Files>
<Files "error">
ForceType application/x-httpd-php
</Files>
<Files "bejelentkezes">
ForceType application/x-httpd-php
</Files>
<Files "regisztracio">
ForceType application/x-httpd-php
</Files>
<Files "adatlap">
ForceType application/x-httpd-php
</Files>
<Files "adatlap_maps">
ForceType application/x-httpd-php
</Files>
<Files "hirbekuldes">
ForceType application/x-httpd-php
</Files>
<Files "kepbekuldes">
ForceType application/x-httpd-php
</Files>
<Files "videobekuldes">
ForceType application/x-httpd-php
</Files>
Szandekos?
A 404es problemadra az a megoldas, hogy az osszes lekerdezes egy PHPba fut ra, ahol mondjuk configbol eldontod, hogy letezik-e.
a
Azért köszi a segítséget(?).
tanuld meg
A regexp-et úgyse tudod a szakmában sokáig még kikerülni... Szal hajrá.
Olvasnivaló
A fenti kódod kiváltását például a következő képpen lehetne intézni:
RewriteCond %{REQUEST_URI} ^/(index|error|...)$
RewriteRule . index.php [L]