2010-09-24 50 views
10

我想在不使用.htaccess文件的情況下配置mod_rewrite規則。當我將規則放在.htaccess文件中時,它們工作正常,但我寧願將所有配置保留在我的/ etc/apache2/sites-available/[site name]配置文件中。如何在不使用.htaccess文件的情況下將RewriteRules放入Apache2?

當我在VirtualHost或Directory指令中放置相同的RewriteRules時,什麼都不起作用。我究竟做錯了什麼?這裏是我的VirtualHost配置文件中的示例:

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

我想我可能會忽略apache2.conf文件中的某些指令,但我不確定。幫幫我。 :)

回答

5

您正在使用RewriteRule pattern that is meant for an .htaccess file。其原因是:

當使用在.htaccess重寫引擎文件的每目錄前綴(其總是爲特定的目錄相同的)是自動除去用於圖案匹配和之後的自動加入替代已經完成。

因此,嘗試這條規則與完整的URL路徑:

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

非常感謝您的快速響應。當我把它放在Directory指令中時,它不起作用,但是我將它移到了VirtualHost,它現在工作正常。任何想法爲什麼? – wittmaniac 2010-09-24 18:09:19

+0

@ user358036:我想你需要把它放到描述你的文檔根目錄的''部分。 – Gumbo 2010-09-24 18:10:49

相關問題