【问题标题】:.htaccess cross browser.htaccess 跨浏览器
【发布时间】:2011-03-03 23:09:25
【问题描述】:

我试图在 linux 服务器上使用 .htaccess 文件为 404 错误加载自定义错误文档,页面获取当前页面 URL,然后根据它的 id 重定向到另一个站点(从数据库中检索)从 URL 中检索。

当前的错误文档存放在这里:

/error_docs/ - 除了已经存在的 HTML 文件之外,我无权上传任何内容

/HTTPDocs/301redir.php 是 .htaccess 文件所在的站点根目录。

我已使用以下内容将 301redir.php 页面加载为错误文档,该页面适用于 FF,但不适用于其他浏览器。

ErrorDocument 404 /310redir.php

使用 .htaccess 是我改变这一点的唯一真正选择,有没有办法解决这个问题并使其适用于所有浏览器?

【问题讨论】:

  • 你确定它可以在 Firefox 中运行吗?错误处理发生在服务器端,只有输出被发送回客户端。所以它要么适用于任何客户,要么适用于任何客户。
  • 您说“没有其他浏览器”,您在其他哪些浏览器中尝试过?您是否从日志中验证了其他浏览器实际上正在生成正确的错误(并且没有成功)?

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


【解决方案1】:

可能您的文件太小,请参阅apache docs 的以下摘录:

微软 Internet Explorer (MSIE) 默认会忽略 服务器生成的错误消息 它们“太小”并且可以替代 它自己的“友好”错误消息。这 大小阈值取决于 错误类型,但一般来说,如果您 使您的错误文档大于 512 字节,然后 MSIE 将显示 服务器生成的错误,而不是 掩盖它。更多信息是 在 Microsoft 知识库中可用 文章 Q294807。

【讨论】:

  • 好建议我阅读了默认服务器错误页面上的注释!以后再试试。
  • 虽然这不能解释为什么我在 Ch + Op 中遇到同样的问题
【解决方案2】:

应该没问题,尝试输入完整的 URL http://www.yourdomain.com/301redir.php

我还注意到你说 310redir.php 是你的例子,但你的描述中是 301redir.php(注释 310 和 301)。

如果您正在执行 404,请不要忘记添加 header("HTTP/1.1 404 Not Found");

【讨论】:

  • THE 310 / 301,这只是我在这里输入问题时犯的一个错误。我故意使用 301,因为我在与 bit.ly 类似的网站上工作。当用户尝试查看不存在的目录时,我使用 404 htaccess 错误加载 php 页面,例如 hhtp://yourdomain.com/3h5i435,(而不是默认的 htmls 文档),然后执行 301 标头重定向。
猜你喜欢
  • 2010-12-21
  • 2011-11-15
  • 2011-06-08
  • 2012-09-30
  • 2013-05-12
  • 2013-09-11
  • 1970-01-01
  • 1970-01-01
  • 2012-01-17
相关资源
最近更新 更多