【问题标题】:Override http status code from 404 to 200覆盖从 404 到 200 的 http 状态码
【发布时间】:2017-05-29 15:29:28
【问题描述】:

我网站的所有页面都可以通过 2 个 URL 访问:一个是普通英语,一个是 IDN。示例:

www.example.com/examplepage
пример.рф/примерстраницы

在服务器上我只有英文文件,所以我决定在 php 中创建 2 个数组:

$realUrl=array('examplepage');
$fakeUrl=array('примерстраницы');

并检查 404.php 文件:如果用户从 $fakeUrl 数组请求 url - 我只包含来自 $realUrl 的页面并将 http 状态代码更改为 200(没有重定向,所以他在地址栏中看到他的 IDN 请求)。这是一个好方法吗?一切正常,但我无法更改此类页面的响应代码,我都尝试过:

header("HTTP/1.1 200 OK");
http_response_code(200);

但响应码仍然是 404。

【问题讨论】:

  • 您应该将所有流量重定向到“正常”页面并在那里分析/处理请求,而不是使用 404 页面。
  • @jeroen 但我想维护请求网址。哦。另一种方法是从 $fakeUrl 数组中创建所有文件并在其中使用 include .. :(
  • 您应该维护请求的 url。看看 url 重写,这样你就可以将所有到不存在页面的流量引导到一个脚本,并根据请求的 url 处理那里的请求。

标签: php http-status-code-404 http-status-codes


【解决方案1】:

你不能这样做,你需要重定向到真实的 URL 或者要求你的页面,如果它们在同一个 服务器。您也可以使用 curl 来确定该页面是否存在但不在 404 中

【讨论】:

  • 您可以使用 curl 来检查该页面是否可用
  • 您尝试使用的代码无法执行,因为您将用户发送到 404,您需要将用户重定向到页面并开始调试页面,但您不能这样做404
【解决方案2】:

我发现了一个使用 htacess 发送我自己的 404 页面的奇怪功能,也许在这个方向上有一个“搜索”要做: 如果你用这个创建一个 htacess:

  ErrorDocument 404 /my_page.php

浏览器将收到带有 404 标头的 my_page.php 的内容。而且好像不能改响应码。

但是如果你写在htacess中:

  ErrorDocument 404 http://www.mys_site.com/my_page.php

所以一个绝对 URL,浏览器将收到带有 200 标头的 my_page.php。我用它来愚弄试图访问页面并查看标题以查看他们是否找到他们正在寻找的页面的“黑客机器人”。

也许在你的 htaccess 中使用它来检测被调用的页面,可以帮助你。

【讨论】:

    【解决方案3】:

    这工作How can I replace Apache HTTP code 404 to 200

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-22
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-21
      相关资源
      最近更新 更多