2010-09-24 6 views
10

Ich möchte eine mod_rewrite-Regel ohne Verwendung von .htaccess-Dateien konfigurieren. Wenn ich Regeln in .htaccess-Dateien einfüge, funktionieren sie gut, aber ich würde es vorziehen, die gesamte Konfiguration in meiner/etc/apache2/sites-available/[Site-Name] -Konfigurationsdatei zu belassen.Wo setze ich RewriteRules in Apache2, ohne .htaccess-Dateien zu verwenden?

Wenn ich die gleichen RewriteRules innerhalb der VirtualHost oder Directory-Direktiven platzieren, funktioniert nichts. Was mache ich falsch? Hier ist ein Beispiel aus meiner Virtualkonfigurationsdatei:

<Directory /> 
Options FollowSymLinks 
# AllowOverride is on for the .htaccess files to work 
AllowOverride All 
RewriteEngine On 
RewriteRule ^oldsite\.php$ newsite.php 
</Directory> 

Ich denke, ich könnte einige Richtlinie innerhalb der apache2.conf Datei wurde mit Blick auf, aber ich bin nicht sicher. Hilfe. :)

Antwort

5

Sie verwenden eine RewriteRule pattern that is meant for an .htaccess file. Der Grund:

Wenn die Rewrite-Engine in .htaccess mit Dateien, die pro-Verzeichnispräfix (was immer das gleiche für ein bestimmtes Verzeichnis ist) automatisch für den Musterabgleich entfernt und automatisch hinzugefügt nach dem Substitution wurde gemacht.

versuchen also diese Regel mit dem vollständigen URL-Pfad:

RewriteRule ^/oldsite\.php$ /newsite.php 
+0

Vielen Dank für die schnelle Antwort. Es würde nicht funktionieren, wenn ich es in die Directory-Direktive einfüge, aber ich habe es zu VirtualHost verschoben und es funktioniert jetzt gut. Irgendeine Idee warum? – wittmaniac

+0

@ user358036: Ich denke, Sie müssen es in den '' Abschnitt, der Ihren Dokumentstamm beschreibt. – Gumbo

Verwandte Themen