【问题标题】:Handling 404's with non-redirecting pages that can't be "+1'd使用不能“+1”的非重定向页面处理 404
【发布时间】:2011-11-10 02:37:37
【问题描述】:

我正在使用 .htaccess 自定义错误页面“error.php”。问题是,它所做的只是重定向它们。

我希望我的 404 在地址栏中显示请求的 URL,就好像用户从未被重定向一样。

以下是一些模型示例:

http://us.battle.net/wow/en/22222222222222222222

http://en.wikipedia.org/wiki/222222222222222222222

这些页面是否只是使用实际上类似于“domain.com/index.php?page=2222222222222222222222”的 URL 重写器?如果是这样,他们是否只是打印出文本而不指示它是 404 页面而不以某种方式将其标记为错误页面?

他们必须在标题中发送一些东西。我有一个用于 +1 按钮的 Chrome 扩展程序,当我转到列出的页面时,它给了我一个错误提示“无法为此页面 +1。”

有人知道这里使用的是什么“标志”吗?

【问题讨论】:

  • 那些页面是 404,我假设你不能“+1”那些页面。
  • 我的error.php 可以被+1,所以我错过了一些东西......
  • 如果您使用 Chrome,您将能够拉出开发人员工具,对吧?在“网络”下,您可以检查响应代码。在这些情况下是 404。

标签: url-rewriting http-status-code-404 google-plus-one


【解决方案1】:

是的,您可以使用确定页面不存在的预处理器发送 HTTP 状态代码。例如,在 PHP 中你会这样使用:

header('HTTP/1.1 404 Page Not Found');

这将发送 404 标头以及您要显示的自定义 404 页面。您可以使用任何 HTTP 状态代码执行此操作,甚至可以自己编写(尽管它们可能不会被识别)。

header('HTTP/1.1 418 I'm a Teapot');

如果您在 .htaccess 文件中使用 Apache 的 ErrorDocument 定义,只要您不修改已定义页面的标题(例如运行 PHP 文件)或重定向到新页面,它就应该保留错误代码.使用纯文本和/或(可能)HTML 文件将保留 404 标头。我从未使用 HTML 文件对其进行过测试。

【讨论】:

  • 当我尝试将预处理器添加到我的自定义 ErrorDocument 时,Chrome 认为我的页面处于重定向循环中。当客户端发送无效的 $_GET 内容时,我将让我的 PHP 页面使用 URL 重写发送标头以及“错误”内容......这可能是我最初想要做的。谢谢,我不知道您可以将页面内容与 404 标头一起发送,我以为浏览器会在收到该标题时中止加载。
猜你喜欢
  • 2012-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多