【问题标题】:htaccess ErrorDocument 404 redirect not workinghtaccess ErrorDocument 404重定向不起作用
【发布时间】:2011-12-01 14:38:13
【问题描述】:

请告诉我为什么这不起作用。它正在工作,但莫名其妙地决定停止工作。 在 php 中,如果找不到这样的页面,我会发出 404。

if(checkPageExists($escaped_url_page_name)){
header('HTTP/1.1: 200 OK');
}else{
header("HTTP/1.0 404 Not Found");
die;
}

我的 htaccess 是

php_flag magic_quotes_gpc Off

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]

ErrorDocument 404 /404.php

404 页面位于根目录,名称为 404.php。五分钟前是这样,但什么都没有改变,为什么这行不通。我已经用 fiddler 测试了页面,它确实抛出了 404,但重定向没有发生。我实现了友好的 url,但我认为这不会影响它,因为 htaccess 中的“/”指的是我认为的站点的物理根目录。提前致谢。

【问题讨论】:

  • 这是您的 .htaccess 文件中的唯一行,还是有其他行可能影响 ErrorDocument 行?

标签: php .htaccess redirect error-handling http-status-code-404


【解决方案1】:

我曾经遇到过类似的问题 - 当 PHP 抛出 404 标头时,Apache 通常不会为其创建 404 页面。 (编辑:这可能与 PHP 是否输出任何文本有关。我并没有真正尝试过。)如果您检查浏览器中的标题,您可以看到 404 标题有效,即使页面是空白的.

我不确定是否有自动化解决方案,但我只是创建了一个 http_error($code) 函数来打印我的自定义错误页面,并在我的代码手动触发 404 时将其与 header() 一起调用。然后我绑定了一些ErrorDocument 的代码仅调用 http_error

ErrorDocument 404 index.php?http_error=404
ErrorDocument 403 index.php?http_error=403

...等等。

【讨论】:

  • 很好的答案,这对我有帮助。谢谢一百万!
猜你喜欢
  • 1970-01-01
  • 2013-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-18
  • 2018-01-03
  • 2014-05-23
  • 2021-10-27
相关资源
最近更新 更多