2012-02-08 112 views
3

我在我的htaccess文件中使用以下內容去除文件上的.php擴展名。它工作正常。htaccess ErrorDocument 404與RewriteEngine衝突

但是,我也想利用ErrorDocument 404 /index.php來重定向任何不存在的網址回主頁。如果我在htaccess中單獨使用ErrorDocument 404 /index.php,重定向工作正常。另外,如果我使用下面的重寫代碼,它會成功剝離php擴展。然而,我希望這兩種方法一起工作。

例如,如果用戶輸入「www.domain.com/register」,他們將轉到www.domain.com/register.php。但是如果他們輸入「www.domain.com/something」,並且something.php不存在,那麼他們將重定向回index.php。我已經在我的htaccess中嘗試了所有這些組合的排列,但無濟於事。任何幫助,將不勝感激。

Options -MultiViews 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ $1.php [L] 

回答

4

不知道你遇到的問題到底是什麼,但如果我改變你的規則,這一點,它爲我工作:

ErrorDocument 404 /index.php 

Options -MultiViews 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.*)$ $1.php [L] 

因此,而不是檢查,如果要求不是的訪問存在的實際文件/目錄,檢查該文件的.php版本是否存在。

+2

這是使用'%{REQUEST_FILENAME} .php -f'而不是'%{REQUEST_FILENAME} -f'的關鍵。 +1 – anubhava 2012-02-08 07:16:59

+0

太棒了!謝謝,Jon和anubhava。我是一個htaccess newb,所以只是把搜索時發現的條件放在一起。現在有意義的是,它是指出,但永遠不會有我自己得到的:)再次感謝! – user1195985 2012-02-09 00:08:41