mod_rewrite und htaccess
gregor walther
- webserver
Ich habe für eine Webseite eine .htaccess- Datei, die alle Zugriffe auf das Verzeichnis, in dem sie liegt, auf ein PHP- Skript umleitet;
Bilder und andere Medien habe ich mit der Zeile
RewriteRule !.(gif|jpg|png|css|mp3)$ /www/htdocs/verzeichniss/start.php4
wohl ausgenommen.
so weit, so gut, funktioniert auch alles wunderbar.
Ich habe jetzt allerdings das Problem, das ich über die URL Parameter übergebe, u.a. auch die Namen von einzubindenden Bilddateien inkl. Endung. Das daß Probleme geben könnte, hatte ich schon befürchtet, nur hat auf meinem Testserver das ganze sehr gut funktioniert; auf dem live-Server allerdings wird in so einem Fall versucht, auf die URL direkt zuzugreifen, die mod-rewrite Umleitung greift nicht mehr.
Kann ich das Verhalten irgendwie z.B. über .htacccess beeinflussen?
hi,
Ich habe jetzt allerdings das Problem, das ich über die URL Parameter übergebe, u.a. auch die Namen von einzubindenden Bilddateien inkl. Endung.
um den query string nach dem rewriten wieder anzuhängen gibt es das flag qsa, query string append.
probiere also mal:
RewriteRule !.(gif|jpg|png|css|mp3)$ /www/htdocs/verzeichniss/start.php4 [qsa]
gruss,
wahsaga
Moin!
um den query string nach dem rewriten wieder anzuhängen gibt es das flag qsa, query string append.
Nö. Der Querystring wird von mod_rewrite überhaupt nicht beeinflusst. Es wird der Request genommen, vorne der Host und hinten der Parameter abgeschnitten, und damit dann in den RewriteRules verglichen, ob der Regex paßt.
Dadurch wird Pfad und Dateiname möglicherweise verändert. Und wenn keine Regeln mehr geprüft werden, wird das Ergebnis wieder zusammengesetzt und dann "ausgeführt".
Wenn man also
RewriteRule ^.*$ /master.php
macht, dann kriegt das PHP-Skript immer alle gesendeten Daten - egal welche URL (wegen Rewriting), egal ob POST oder GET, egal ob mit oder ohne Cookie.
QSA ist dann relevant, wenn man mit der RewriteRule im _Querystring_ was verändern bzw. was anhängen will. Beziehungsweise man sollte dann diesen Parameter ausprobieren, wenn das ursprünglich gewünschte sich trotz scheinbarer Korrektheit nicht realisieren läßt. Ich muß da zugeben, dass ich QSA noch nicht wirklich intensiv untersucht habe, weil ich es bislang noch nie gebraucht habe.
- Sven Rautenberg
probiere also mal:
RewriteRule !.(gif|jpg|png|css|mp3)$ /www/htdocs/verzeichniss/start.php4 [qsa]
Dank Dir, aber das hat so auf Anhieb leider nicht geholfen.
Gruss aus Berlin,
gw.