我有以下404页....
RewriteCond%{REQUEST_FILENAME}! - f RewriteRule(。+)$?file = $ 1 [L]
但它显示所有目录的此页面和根目录的页面事件
答案 0 :(得分:1)
确保在.htaccess或您的vhost声明中打开了重写引擎。此外,您需要检查请求是否存在目录或符号链接。这是一个更新的例子:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule (.+)$ /404.php?page=$1 [L]
Apache还有一个404 /文件未找到响应的文档处理程序。您可以通过REQUEST_URI
标题访问请求的文件。这是一个带有相应Apache规则和PHP 404错误处理程序文件的示例:
htaccess的:
ErrorDocument 404 /404.php
404.php:
<?php
echo "Tried to access: {$_SERVER['REQUEST_URI']}";
?>
我更喜欢ErrorDocument处理程序,因为Apache仍会记录404响应代码,这对于为丢失的页面/损坏的链接生成分析非常有用。