我对PHP和htaccess很新。我试图在我的项目中使用php-mvc框架。但是,他们不支持自定义错误页面。所以,我试图为我的项目实现它,因为我在我的项目中需要它。
当http响应为404时,htaccess显示自定义错误页面时出现问题。我已经在stackoverflow上检查了有关ErrorDocument和RewriteEngine的所有答案,这些答案都不适用于我。这是我的htaccess代码:
Options -Indexes
RewriteEngine On
RewriteBase /myproject/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
ErrorDocument 404 /myproject/public/404.html?page=error-404
如果我删除RewriteEngine On
,它就可以了。我认为ErrorDocument与RewriteEngine冲突。
任何帮助将不胜感激。欢呼声。
答案 0 :(得分:0)
问题在于这些条件:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
基本上说:如果请求不是存在的文件,目录或符号链接。所以,基本上是为404服务的。
因此,在这个实例中永远不会有apache生成404因为任何通常生成一个请求的请求都会被应用程序的index.php
捕获。这意味着为了返回404.html
页面,您需要从您的php应用程序链接到它。您需要编写PHP代码,以识别$_GET['url']
何时没有指向有效的URL并重定向到/myproject/public/404.html?page=error-404
。