2012-05-24 47 views
0

我試圖將不存在的網頁重定向到我的index.php。

我在與index.php相同的文件夾中創建了一個.htaccess文件。

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
Rewritecond %{REQUEST_FILENAME} -d 

RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

我使用Wampserver和Apache服務器httpd.conf中設置爲

的AllowOverride所有

但仍當我嘗試輸入一個不存在的網頁我得到404錯誤。 有什麼想法?

編輯。 順便說一句,我看到這篇文章HERE並嘗試過那裏的東西,但它不適合我。

回答

2

爲什麼你不使用ErrorDocument指令?

ErrorDocument 404 index.php 

這很簡單,而且開銷少得多。

如果你堅持使用mod_rewrite,你可以使用De Morgan的法則,並且不關心頁面確實存在的情況:無論如何它都會被正常使用,你不需要做顯式的RewriteRule^* $。

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-s 
RewriteCond %{REQUEST_FILENAME} !-l 
Rewritecond %{REQUEST_FILENAME} !-d 
RewriteRule ^.*$ index.php [NC,L] 

這就是說,我認爲您發佈的代碼段應該有效。我對Wampserver完全不熟悉,但看起來你必須明確地指出enable the mod_rewrite module,你有沒有做到這一點?

此外,將不存在的頁面重定向到index.php,而不向機器人或用戶指示該頁面不存在,這不是一個好主意。一個有效頁面鏈接的漂亮錯誤頁面將是更好的選擇。

+0

請試試這個,謝謝。 –