2011-07-15 49 views
2

我正在開發一個PHP的網站,它運行在本地主機上的Apache 2.2和Windows 7爲什麼Windows上的localhost上mod_rewrite和.htaccess的配置不起作用?

在我的httpd.conf我啓用了mod_rewrite模塊:

LoadModule rewrite_module modules/mod_rewrite.so 

我有一個文件位於D:\ MyWeb和我正在處理的網站位於D:\ MyWeb \ simple_cms

出於測試目的,我將.htaccess文件放在D:\ MyWeb \ simple_cms中,這裏是它的內容:

Options +FollowSymlinks 

RewriteEngine on 
RewriteRule ^(.*)\.htm$ $1.php [NC] 

現在,要求http://127.0.0.1/simple_cms/index.htm應 「重定向」 到http://127.0.0.1/simple_cms/index.php但它顯示 「404未找到錯誤」(當然存在的index.php那裏)

在access.log的有:

127.0.0.1 - - [15/Jul/2011:14:16:15 +0200] "GET /simple_cms/index.htm HTTP/1.1" 404 218 

並在裏面error.log:

[Fri Jul 15 14:19:30 2011] [error] [client 127.0.0.1] File does not exist: D:/MyWeb/simple_cms/index.htm 

爲什麼這是行不通的?這個正則表達式是否無效?

+1

1)確保啓用了.htaccess文件(將'AllowOverride All'放在合適的位置); 2)請啓用重寫調試('RewriteLogLevel 9')並檢查重寫日誌。 – LazyOne

+0

'AllowOverride All' - 基本上,這是答案。請把它作爲一個新的答案,我可以接受它。謝謝 –

回答

4
  1. 確保.htaccess文件啓用(把AllowOverride All在合適的地方)。

  2. 如果沒有 - 請啓用重寫調試(RewriteLogLevel 9)並檢查重寫日誌。

0

當您對httpd.conf進行更改後,您是否重新啓動apache?除非你這樣做,否則它不會使用新的設置。

也沒你取消註釋以下行httpd.conf(如果存在):
AddModule mod_rewrite.c

+0

是的,我在每次修改此文件後都重新啓動了Apache。我沒有在我的httpd.conf中找到這行'AddModule mod_rewrite.c'全部爲 –

+1

@Piotr如果您使用Apache v2或更新的版本,我認爲您不需要該行。 – Caner

+0

@Piotr你試過這個:'RewriteRule ^(。*).htm $ $ 1.php [NC]' – Caner

相關問題