我想用错误的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]
答案 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]