2009-08-28 14 views
2

Umgebung: Apache 2 wird mit Mac OS X Leopard ausgeliefert; ohne große Änderungen in der Standard-httpd.conf.Verwenden von relativen URLs mit mod_rewrite

Ich richte einige Überschreibungen über meine .htaccess ein, aber ich kann keine Zielpfade relativ zum aktuellen Verzeichnis verwenden.

# URL: http://localhost/~davis/rewrite/.htaccess 
# File: /Users/davis/Sites/rewrite/.htaccess 

RewriteRule go.php target.php 

# Not working 

Ich erwarte die Regel Benutzer http://localhost/~davis/rewrite/target.php zu umleiten. Es löst den korrekten physischen Pfad auf, gibt mir aber 404, dass der Pfad /Users/davis/Sites/rewrite/target.php nicht existiert.

Es funktioniert alles gut, wenn ich die vollständige URL gebe.

# URL: http://localhost/~davis/rewrite/.htaccess 
# File: /Users/davis/Sites/rewrite/.htaccess 

RewriteRule go.php /~davis/rewrite/target.php 

# Works 

Fehle ich hier etwas? Alles was in der httpd.conf eingerichtet wird?

Danke!

Bearbeiten: Die relativen URLs funktionieren ordnungsgemäß auf meinem Linux-Server. In meiner lokalen Mac-Box habe ich Probleme.

Antwort

1

Got es gelöst, endlich!

Es beginnt zu arbeiten, wenn ich DocumentRoot in meinem ~/Sites-Verzeichnis oder erstellen Sie eine VirtualHost für diesen Pfad. Offenbar war Apache im Setup des Benutzerverzeichnisses nicht in der Lage, den physischen Pfad dem ~username Alias ​​zuzuordnen.

Vielen Dank für Ihre Eingaben!

+0

Können Sie diese Lösung genauer erklären? – jnthnclrk

+0

Standardmäßig greife ich mit der URL http: // localhost/~ davis/auf meine lokalen Websites zu, wobei davis mein Benutzername ist. Aber in diesem Setup konnte ich keine relativen RewriteRules verwenden. Was ich tat, war die DocumentRoot Einstellung in der Apache httpd.conf direkt zu ändern, um meine Seiten zu verweisen Ordner: DocumentRoot "/ Users/davis/Sites" Und das Problem dadurch gelöst. Jetzt greife ich direkt auf meine lokalen Sites unter http: // localhost/zu. Sie finden die Conf-Datei unter/etc/apache2/ Hope diese Erklärung hilft :) –

1

Versuchen Sie die Basis-URL anpassen:

RewriteBase /~davis/rewrite/ 
+0

Danke für den Vorschlag Gumbo. Aber mein Ziel ist es, das .htaccess unabhängig vom Serververzeichnis zu machen, in dem die App installiert ist. Wenn wir RewriteBase verwenden, müssen wir es immer noch auf das richtige Verzeichnis einstellen. Auf der anderen Seite, wenn ich URLs relativ zum aktuellen Verzeichnis angeben kann, löst das das Problem ziemlich gut. –

0

Sie können versuchen, RewriteBase, aber anders als das glaube ich nicht, dass es alles, was Sie tun können.

RewriteBase /~davis/rewrite/ 
+0

Die Sache ist, relative Pfade funktionieren korrekt auf meinem Linux-Server und auch auf meiner lokalen Windows-Box. Ich frage mich, ob das etwas mit der Einrichtung von Benutzerverzeichnissen zu tun hat (~ davis usw.). –

Verwandte Themen