htaccess ErrorDocument 404与RewriteEngine On冲突

use*_*985 4 .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]
Run Code Online (Sandbox Code Playgroud)

Jon*_*Lin 5

不确定你遇到的问题究竟是什么,但如果我改变你的规则,它对我有用:

ErrorDocument 404 /index.php

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

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

  • 这是关键使用`%{} REQUEST_FILENAME .PHP -f`而不是`%{} REQUEST_FILENAME -f`.+1 (3认同)