这是我当前的.htaccess文件:
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]+\s([^\s]+)\.php\s
RewriteRule .* %1.html [R=301,L]
RewriteRule ^(.*)\.html$ $1.php
ErrorDocument 404 /page-404.html
就像这样,当我打开以.php结尾的地址时,它会被自动重定向到相同的地址,但结尾为.html,就像我想要的那样。
当我删除这些行时:
RewriteEngine On
ErrorDocument 404 /page-404.html
我尝试打开不存在的目录,我将404错误重定向到我想要的页面。当我添加我发布的第一个代码中显示的其他行时,问题就来了。
问题出在哪里以及为什么404错误重定向在我的第一个例子中不起作用?
提前致谢!
答案 0 :(得分:1)
你的规则如下:
ErrorDocument 404 /page-404.html
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]+\s([^\s]+)\.php\s [NC]
RewriteRule .* %1.html [R=301,L]
# make sure .php file exists for the requested .html file
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^(.+?)\.html$ $1.php [L,NC]