覆盖http状态码从404到200

我的网站的所有页面都可以通过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。


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


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

链接地址: http://www.djcxy.com/p/45613.html

上一篇: Override http status code from 404 to 200

下一篇: HTTP status code for a boolean resource