apache : mod-rewrite
Patrick Daether
- webserver
Hi!
Ich möchte meine PHP-Sites "suchmaschinen-freundlich" gestalten.
Also URL wie
www.server.de/index.php?var1=value1&var2=...
sollen per
www.server.de/index/var1/value1/var2/...
ansprechbar sein.
Zu diesem Zweck wollte ich das mod-rewrite unter dem Apache heranziehen:
RewriteEngine on
RewriteBase /
RewriteRule ^index/(.*) index.php/$1 [QSA]
Nun habe ich gemerkt, daß ich das gar nicht brauche, da mein Apache die Seiten auch so findet.
Falls ein Verzeichnis nicht existiert, so sucht er wohl von hinten rekursiv so lange weiter, bis er was existierendes findet.
Nun hatte ich das Problem, daß er die Bilder/css-Dateien, etc. in den Seiten nicht mehr gefunden hat, da er jetzt anstatt nach
/images/image.gif
nach
/index/var1/value1/.../images/image.gif
gesucht hat.
Also doch noch einen mod-rewrite Eintrag in das .htaccess File:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} ^(.*)images/(.*)$
RewriteRule ^(.*)images/(.*)$ images/$2 [L]
#Includes umleiten
RewriteCond %{REQUEST_URI} ^(.*)include/(.*)$
RewriteRule ^(.*)include/(.*)$ include/$2 [L]
Nun klappt alles bestens unter IE und Netscape 6.x.
Der Netscape 4.7 aber z.B. findet zwar die Seiten, aber die Image-Src gehen immer noch ins leere.
Woran kann das liegen?
Das mod-rewrite arbeitet schließlich auf Serverseite und müßte doch unabhängig vom Browser sein?!?
Kann mir da vielleicht jemand helfen, hab ich bei den reg. Ausdrücken Mist gebaut?
Danke im voraus
Patrick
Hi,
Nun habe ich gemerkt, daß ich das gar nicht brauche,
da mein Apache die Seiten auch so findet.
Falls ein Verzeichnis nicht existiert, so sucht er
wohl von hinten rekursiv so lange weiter, bis er
was existierendes findet.
Ja. Und den eigentlich angegebenen Pfad kannst Du sogar als Environment-Variable lesen.
Du kannst also Dein Skript so schreiben, daß es diesen Pfad in CGI-Parameter (dann allerdings nur Stellungsparameter) zurück übersetzen kann.
Nun klappt alles bestens unter IE und Netscape 6.x.
Der Netscape 4.7 aber z.B. findet zwar die Seiten,
aber die Image-Src gehen immer noch ins leere.
Woran kann das liegen?
Vergleiche die vom Client angeforderten Pfade (Inhalt der HTML-Seiten im Browser) mit den übersetzten Anforderungen (access_log auf dem Server) - sind letztere wirklich das, was Du erreichen wolltest?
Vielleicht ist in Deinen übersetzten Pfaden ein systematischer Fehler (doppelte "/" etc.), welchen einige Browser tolerieren und andere nicht.
Das mod-rewrite arbeitet schließlich auf Serverseite
und müßte doch unabhängig vom Browser sein?!?
Wenn Deine Regeln korrekt sind, würde ich dasselbe annehmen. Wenn nicht ...
Viele Grüße
Michael
MoiN!
Ich möchte meine PHP-Sites "suchmaschinen-freundlich" gestalten.
Also URL wie
www.server.de/index.php?var1=value1&var2=...
sollen per
www.server.de/index/var1/value1/var2/...
ansprechbar sein.
Vielleicht solltest du zuvor einfach mal die Logfiles auswerten und schauen, welche Seiten die Suchmaschinen so abgerufen haben. IIRC ist es durchaus bereits der Fall, daß Suchmaschinen auch den Links mit Parametern folgen, sofern diese als feste URL im Source stehen.
- Sven Rautenberg