2010-02-03 138 views
4

我目前在本地機器上運行Apache2,並安裝了最新版本的Ubuntu。.htaccess中的RewriteRule無法正常工作

我想通過使用.htaccess文件獲取基本的URL重寫工作。

確實存在文件「http://localhost/page.php?=home」,位置「/ doesnotexist/home」不存在。

我希望在第二個請求時加載第一個頁面。

我的.htaccess文件看起來是這樣的:

RewriteEngine On 
RewriteRule ^/doesnotexist/(.*)$ /page.php?p=$1 

我的httpd.conf文件看起來是這樣的:

LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so 

<Directory /var/www> 
    AllowOverride All 
</Directory> 

請注意,我的httpd.conf文件看起來正是這樣,作爲在我編輯它之前它是空的。

,我得到的結果是這樣的:

Not Found 

The requested URL /doesnotexist/home was not found on this server. 

我用Google搜索日益生活****出這個問題,我從來沒有得到比上述錯誤的任何其他。

如果有人有任何想法,我會非常感激。

回答

19

爲他人謀取利益,我想出了答案:

在文件 「的/ etc/apache2的//000-默認啓用的網站,」 有行:

AllowOverride None 

更改爲:

AllowOverride All 
2

在.htaccess文件中使用mod_rewrite時,需要從模式中刪除上下文路徑前綴。在根目錄的情況下,路徑前綴只是/。所以,試試這個:

RewriteRule ^doesnotexist/(.*)$ /page.php?p=$1 
+0

感謝您的快速回答,但很抱歉,行爲不變。 – riwalk 2010-02-03 18:01:16

0

如果我把一個的.htaccess成/庫/ Web服務器/文檔,打開 「本地主機/」;爲了測試它,這按預期工作。它只是在「〜/站點」中不起作用。我在Mac OS X Mavericks上試過這個。