Apache und mod_rewrite
Engel512
- webserver
0 Sönke Tesch0 Engel5120 Sönke Tesch0 Engel512
Hallo erstmal,
vielleicht hat noch jemand eine Tip für mich.
Also ich habe eine Wampp-Installation(/Apache1.3.27) auf WinXP und versuche mit mod_rewrite zu arbeiten.
Miene htaccess sieht so aus.
RewriteEngine On
RewriteRule ^aindex/(.*).html$ aindex.php4?open=$1 [R]
Im rewrite.log sieht es so aus:
194.15.188.94 - - [17/Jan/2003:14:31:37 +0100] [AP-UWE/sid#5b57a0][rid#66cba8/initial] (1) [per-dir d:/daten/web/cargo/admin/] redirect to http://AP-UWE/d:/daten/web/cargo/admin/aindex.php4?open=aticker [REDIRECT/302]
Nun weiß ich nicht warum er mir einen vollständigen Pfad in die Addresszeile schreibt, geschweige denn das ich rausbekommen habe woher er den Pfad hat.
Für Hinweise wär eich sehr dankbar.
Uwe
Miene htaccess sieht so aus.
RewriteEngine On
RewriteRule ^aindex/(.*).html$ aindex.php4?open=$1 [R]
Erstens fehlt da RewriteBase und zweitens: Bist Du Dir sicher, eine externe Weiterleitung erzwingen zu wollen, wenn eine interne Umsetzung reichen würde?
Im rewrite.log sieht es so aus:
194.15.188.94 - - [17/Jan/2003:14:31:37 +0100] [AP-UWE/sid#5b57a0][rid#66cba8/initial] (1) [per-dir d:/daten/web/cargo/admin/] redirect to http://AP-UWE/d:/daten/web/cargo/admin/aindex.php4?open=aticker [REDIRECT/302]
Nun weiß ich nicht warum er mir einen vollständigen Pfad in die Addresszeile schreibt,
Eine URL wird im Server als erstes in den entsprechenden physikalischen Pfad abgeändert. Diesen physikalischen Pfad bekommt mod_rewrite (im Falle der Benutzung in der .htaccess) vorgesetzt. mod_rewrite muß sein Ergebnis dann als URL (!) wieder neu in den Server einschleusen. Da mod_rewrite wie gesagt nur den physikalischen Pfad zu Gesicht bekommt, mußt Du mit RewriteBase explizit angeben, wie der tatsächliche "Web-Pfad" aussieht, damit mod_rewrite den physikalischen Pfad durch diesen Web-Pfad ersetzen kann und so auf eine korrekte URL kommt.
Die geänderte URL siehst Du außerdem deshalb, weil Du darum gebeten hast ([R]: externe Weiterleitung).
Ist übrigens alles haargenau und viel besser in der Apache-Anleitung erklärt, Kapitel mod_rewrite.
geschweige denn das ich rausbekommen habe woher er den Pfad hat.
Wieso, ist das nicht der, in der die .htaccess liegt?
Gruß,
soenk.e
Hallo erstmal,
und vielen Dank für die Anmerkungen.Leider ist mein englisch nicht sogut das ich alles verstanden hätte was in den BEschreibungen steht.
Erstens fehlt da RewriteBase und zweitens: Bist Du Dir sicher, eine externe Weiterleitung erzwingen zu wollen, wenn eine interne Umsetzung reichen würde?
Diesen Unterschied zum Beispiel konnte ich garnicht rauslesen.
Eine URL wird im Server als erstes in den entsprechenden physikalischen Pfad abgeändert. Diesen physikalischen Pfad bekommt mod_rewrite (im Falle der Benutzung in der .htaccess) vorgesetzt. mod_rewrite muß sein Ergebnis dann als URL (!) wieder neu in den Server einschleusen. Da mod_rewrite wie gesagt nur den physikalischen Pfad zu Gesicht bekommt, mußt Du mit RewriteBase explizit angeben, wie der tatsächliche "Web-Pfad" aussieht, damit mod_rewrite den physikalischen Pfad durch diesen Web-Pfad ersetzen kann und so auf eine korrekte URL kommt.
Mit dem Web-Pfad hatte ich schon rumprobiert aber es ist nicht das richtige rausgekommen, aber ich werde mich nochmal ransetzen.
Uwe
Mit dem Web-Pfad hatte ich schon rumprobiert aber es ist nicht das richtige rausgekommen, aber ich werde mich nochmal ransetzen.
Gib einfach beispielsweise
rewritebase /verzeichnis
an, wenn sich die .htaccess im obersten Web-Verzeichnis (also unter "http://test.de/verzeichnis") befindet. Dann sollte es funktionieren. Wenn Du dann noch das [R] weglässt, wird die Adresse nur intern behandelt, der Browser bekommt davon nichts mit und zeigt dementsprechend auch die eingegebene Adresse weiter an.
Gruß,
soenk.e
Ich wollt enochmal Danke sagen, habe es jetzt hinbekommen.
Hatte die .htaccess im falschen Verzeichnis zu stehen.
uwe