Szépített webcímekkel nem találja a képeket, CSS-t
Sziasztok,
Régóta szeretném kipróbálni a mod_rewrite adta lehetőségeket, és ehhez nagyon jó forrásnak tűnik a cikk a weblabor.hu-n. A feladat nagyon egyszerű lenne, azt szeretném, ha bármilyen URL-t, ami nem file vagy könyvtár azt egy
A .htaccess file:A dolog odáig teljesen jól működik, ameddig nem tartalmaz a
stb. RewriteBase nem számított.
■ Régóta szeretném kipróbálni a mod_rewrite adta lehetőségeket, és ehhez nagyon jó forrásnak tűnik a cikk a weblabor.hu-n. A feladat nagyon egyszerű lenne, azt szeretném, ha bármilyen URL-t, ami nem file vagy könyvtár azt egy
$_GET
típusú változóban az index.php-nek adna át az Apache. Megjegyzem, hogy egyelőre csak windowson probaltam ki, localhoston, ahol alkönyvtárban van a projekt.A .htaccess file:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteOptions MaxRedirects=10
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ index.php?qs=$1 [L]
</IfModule>
REQUEST_URI
slash-t, tehát pl http://localhost/projekt/menupont. Amint megjelenik benne a slash, a kepek es a CSS nem jelenitodik meg. Például:http://localhost/projekt/menupont/
http://localhost/projekt/menupont/almenupont
http://localhost/projekt/menupont/almenupont/
http://localhost/projekt/menupont/almenupont
http://localhost/projekt/menupont/almenupont/
stb. RewriteBase nem számított.
base href
megfejtés
Köszönöm a másik észrevételt a fájlok és könyvátarak létezésével kapcsolatban. Természetesen akkor szeretném, ha nem valódi fájl könyvtár.
hogy ne lenne szabványos?
Nem létezik
azaz:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?qs=$1 [L,QSA]
</IfModule>
--------
Poetro
mégsem
Ugyanazt a jelenséget produkálja, amit leírtam a téma megnyitásakor. Ha a képet a "/image/kep.jpg" formában próbálom meg elérni akkor nem találja, csak, úgy, hogy "image/kep.jpg".
Avagy...
alakul
Így néz most ki a .htaccess
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?qs=$1 [L,QSA]
</IfModule>
Amit leszűrtem, hogy a RewriteCond-nál az [OR] nem kell. Akkor a létező alkönyvtárak sem működnek.
A HTML-ben a <base>-t be kell állítani, a <head> részben még a CSS előtt. Fontos, hogy ez /-re (slash) végződjön.
Ezek után lehet hivatkozni a képekre és a css fájlokra:
<link rel="stylesheet" type="text/css" href="./style/screen.css" />
<img src="/images/image.jpg" alt="" />
<img src="./images/image.jpg" alt="" />
Formában fogadja el, ha /-el (slash) kezdődik, tehát a gyökérre próbál hivatkozni, akkor nem jó.
Remélem másnak még hasznosak lesznek ezek a tapasztalatok.
.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule !\.(txt|ico|gif|jpg|png|css|js|html|phtml|swf)$ index.php
</IfModule>
Ez a szabály azt csinálja, hogy a felsorolt kiterjesztésű file-okon kívül mindent az index.php-ra irányít.
A phtml azért van benne, hogy ha mégis van olyan php file, amit nem kell RerwriteRule-olni, akkor phtml kiterjesztést adunk neki.
Gyulus