htaccess ErrorDocument 404与RewriteEngine On冲突

时间:2012-02-08 00:07:33

标签: .htaccess mod-rewrite

我在htaccess文件中使用以下内容删除了文件中的.php扩展名。它工作正常。

但是,我还希望利用ErrorDocument 404 /index.php将任何不存在的网址重定向回主页。如果我在ErrorDocument 404 /index.php中单独使用htaccess,则重定向可以正常工作。此外,如果我使用下面的重写代码,它成功剥离了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]

1 个答案:

答案 0 :(得分:5)

不确定您遇到的问题究竟是什么,但如果我将规则更改为此,则对我有用:

ErrorDocument 404 /index.php

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

因此,不检查请求是否未访问存在的实际文件/目录,而是检查该文件的.php版本是否存在。