我想执行301重定向,但是出了错

时间:2020-02-05 13:42:14

标签: .htaccess url redirect url-rewriting

我想用错误的URL将用户重定向到404页面,但是最终从所有页面重定向。谁能告诉我怎么了? 这是我的.htaccess代码

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [NC,L]
RewriteCond %{REQUEST_FILENAME}\.php !-f
RewriteRule . /404.php [L,R=301]

1 个答案:

答案 0 :(得分:0)

您不应“重定向”到错误文档。您应该改为使用ErrorDocument指令配置自定义错误文档,然后Apache将使用内部子请求以404.php进行响应,并确保设置了正确的HTTP状态(即404,而不是301)

根据所请求的URL路径,检查.php文件是否存在(重写之前)的条件并不严格正确。 REQUEST_FILENAME包含请求所映射的文件系统路径,该路径不一定与所请求的URL路径相同。

假设您的.htaccess文件位于文档根目录中,请尝试以下操作:

# Define custom error documents
ErrorDocument 404 /404.php

RewriteEngine on 

# Rewrite - append .php extension if required.
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule (.*) $1.php [L]