404定制

时间:2013-03-31 13:48:46

标签: php .htaccess http-status-code-404

我想制作一个自定义的404页面。

我创建了一个仅包含此行的.htaccess:

ErrorDocument 404 /errors/404.html

我网站的结构是这样的:

  • 错误
    • 404.html
  • 的index.php
  • 的.htaccess
  • 包括
    • header.html中

我总是在404页面上得到这个错误:

Not Found

The requested URL /blabla/bg was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

一个想法?谢谢!

1 个答案:

答案 0 :(得分:1)

我的猜测是你的文档根目录不等于.htaccess的位置。不幸的是,ErrorDocument.htaccess的位置无关,而是将路径建立在文档根目录的位置(例如/var/www/

我过去用来获取“相对”404错误页面的一种(一种hacky)解决方案是执行以下操作:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.* 404.php [L]

另一种(更正确的方法)是指定服务器上真实文档根目录的完整路径。

要获得此完整路径,您需要在浏览器中打开404页面(并在您的情况下将其设置为php页面,以便您可以将此变量输出:$_SERVER['SCRIPT_NAME']或者如果您碰巧有更多了解目录结构的设置。您可以基于$_SERVER['DOCUMENT_ROOT']