2017-01-14 28 views
0

我的网站的所有页面都可以通过2个网址访问:一个是普通英文和一个是IDN。例如:覆盖http状态代码从404到200

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

+0

代替使用404页面,您应该将所有流量重定向到“正常”页面,并在那里分析/处理请求。 – jeroen

+0

@ jeroen但我想维护请求的网址。哦。另一种方法是从$ fakeUrl数组中创建所有文件,并使用包含在内的所有文件.. :( –

+0

)您应该维护请求的url。查看url重写,这样您可以将所有流量导向不存在的页面导向到一个脚本并根据请求的URL处理请求 – jeroen

回答

0

你不能做到这一点,你需要重定向到真实的网址或要求您的网页,如果他们在同一个 服务器。你也可以使用卷曲来确定该页面是否存在但不是在404

+0

可以使用curl来检查该页是否可用 –

+0

您尝试使用的代码无法执行,因为您要将用户发送到404您需要重定向用户访问一个页面并开始隐藏该页面,但404不能这样做 –

0

我发现了一个奇怪的特性使用htacess发送我自己的404页面,也许有一个“搜索”在这个方向: if你用这个创建一个htacess:

ErrorDocument 404 /my_page.php 

浏览器将会收到带有404头的my_page.php的内容。看起来你不能改变响应代码。

但是,如果你在写htacess:

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

这样一个绝对的URL,浏览器将收到my_page.php有200头。我用它欺骗了“黑客机器人”,他们试图访问页面并查看页眉,看看他们是否找到了他们正在寻找的页面。

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