【问题标题】:How can I replace Apache HTTP code 404 to 200如何将 Apache HTTP 代码 404 替换为 200
【发布时间】:2013-02-11 13:42:41
【问题描述】:

我不希望网站的 apache 返回任何 HTTP 代码 404,
原因是认证委员会会扫描所有网站,
许多javascript链接和一些事件会导致404代码,
事实上,这些链接是有效的,但检查器会误判错误。
所以,我想阻止 apache 返回 HTTP 代码 404,
如何配置 apache 返回 HTTP 编码 200 而不是 404 并显示我的定义错误页面?

【问题讨论】:

  • 当您说链接有效时,为什么 Apache 返回 404?
  • 喜欢这个链接,检查器会得到一个404代码。 javascript:parent.$.fancybox.open({href%20:%20'board.php?id=472',%20type:%20'ajax'});
  • 然后把它放在点击事件中,而不是href。或者修复解析器。
  • "我可以配置,即使该文件不存在,但 apache 总是返回 HTTP 状态代码 200?"当然,但只有傻瓜才会这样做,如果您的服务器出于该死的充分理由这样做,搜索引擎会停止为您的网站编制索引

标签: apache http httpresponse


【解决方案1】:

发件人:http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html

  1. 在您的主 Web 目录中创建一个名为 404.. 的空白文件。可以为空白。
  2. 将此添加到您的 .htaccess 文件中:

    Redirect 200 /404
    ErrorDocument 404 /404
    

这会将 Apache ErrorDocument 更改为 /404 文件。但是 Redirect 行会导致对 /404 的请求发出 200 OK 响应而不是 404。

如果这不起作用,那无疑是由于重写。因此,如果是这种情况,请在 .htaccess 文件中的前 2 行下方但在任何其他重写行上方添加:

Options FollowSymLinks ExecCGI

RewriteEngine On
RewriteBase /

# If the requested file doesnt exist
# and if the requested file is not an existing directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^[^4]* /404 [L,S=4000]

更详细的解释在:http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html#Automate_ErrorDocument_Triggering

【讨论】:

  • 你知道怎么做吗,但不是返回一个页面/404,而是返回一个实际的响应代码?喜欢 404 或 401
  • 我想将错误代码从 403 更改为 404 。你知道怎么做吗?
  • 我想使用这种技术将丢失目录或文件的任何请求重定向到 index.html,但只需将 /404 更改为 /index.html 不起作用。如果我将Redirect 排除在外,则index.html 加载正确,但状态为404,我需要状态200。有任何想法吗? (我使用的是静态 HTML 页面,所以 PHP 标头不是一个选项)。
  • 我使用了您的代码,但仍然无法正常工作。在这里查看我的问题:stackoverflow.com/questions/70554192/…
【解决方案2】:

我认为你可以在下面简单地使用 PHP 代码:

header("HTTP/1.1 200 OK");

你可以测试一下。

【讨论】:

  • 我可以配置,即使该文件不存在,但 apache 总是返回 HTTP 状态代码 200?
  • 这对我有用。我正在使用 ErrorDocument 404 / 导致 404 状态。手动设置 200 响应将其从 404 更改为 200。
【解决方案3】:

我用这个:

<?php header("Status: 200 OK"); ?>

此代码必须放在 .php 文件顶部的第一行代码中。搜索引擎、爬虫、浏览器和任何访问该站点的人都会将错误文档 404 页面视为标题 200。

Header 200 表示页面存在。 Google 将抓取标题状态为 200 的网站并将其编入索引。

【讨论】:

    猜你喜欢
    • 2011-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-29
    相关资源
    最近更新 更多