/ mod_rewrite: Einfache Frage zu einfacher Umleitung
angie
- webserver
0 Cheatah0 Edgar Ehritt
Hallo.
Hmm, irgendwie finde ich gerade keine Lösung, obwohl es sich um das überdokumentierte mod_rewrite dreht.
Was ich möchte:
foo.com/bar bzw. foo.com/bar/ soll in foo.com/bar.html umgeschrieben werden. Das soll immer klappen, also auch bei foo.com/bar/foo/bar oder foo.com/bar/foobar.php?foo=bar usw.
Meine Direktive sieht bisher so aus:
RewriteRule ^bar/?$ /bar.html
Das funktioniert auch, allerdings nur für bar und bar/. Ruft der User foo.com/bar/foo/bar oder ähnliches auf, werden die zusätzlichen Paramter an bar.html gehängt und es gibt (natürlich) einen 404. Wieso werden die Parameter angehängt, wenn ich doch kein $1 in meiner Direktive habe.?
Lieben Dank für eure Hilfe!
Hi,
Meine Direktive sieht bisher so aus:
RewriteRule ^bar/?$ /bar.html
nun ja - Du sagst explizit, dass "bar" am Anfang stehen soll, und ebenso explizit, dass "bar.html" im Root liegt. Beides entspricht offenbar nicht Deinen Anforderungen, vielleicht solltest Du also eben diese Punkte erst mal ändern.
Wieso werden die Parameter angehängt, wenn ich doch kein $1 in meiner Direktive habe.?
Der Query-String steht in einer RewriteRule eh nicht zur Verfügung, der steht also gar nicht zur Disposition. Wenn Du ihn beachten möchtest, verwende eine RewriteCond; nebenbei möchtest Du Dir vielleicht den [QSA]-Schalter ansehen.
Cheatah
Hallo Angie,
RewriteRule ^bar/?$ /bar.html
der Ausdruck ^bar/?$ trifft nur auf die Zeichenfolgen "bar" und "bar/" zu. Vermutlich ist ^bar(/.*)?$ was Du suchst. Bitte beschäftige Dich mit PCRE!
Ruft der User foo.com/bar/foo/bar oder ähnliches auf, werden die zusätzlichen Paramter an bar.html gehängt und es gibt (natürlich) einen 404. Wieso werden die Parameter angehängt, wenn ich doch kein $1 in meiner Direktive habe.?
Was bezeichnest Du in diesem Fall (http://domain/bar/foo/bar) als Parameter?
Gruß aus Berlin!
eddi