将http状态代码从404覆盖到200

时间:2017-01-14 09:29:47

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

我的网站的所有页面都可以通过2个网址访问:一个是普通英语,一个是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。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我发现了一个奇怪的功能,使用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中使用它来检测被调用的页面,可以帮到你。

答案 2 :(得分:0)

这有效How can I replace Apache HTTP code 404 to 200

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

此代码必须放在第一行代码的.php文件顶部。搜索引擎,搜寻器,浏览器以及访问该网站的任何人都将看到错误文档404页作为标头200。

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

相关问题