我正在寻找客户端重定向到PHP中的另一个域。
我不想进行301 - 302 - 307等重定向的原因是因为我希望该页面向抓取工具发送200 HTTP OK响应。
通常我使用混淆的JavaScript在静态虚拟主机(如S3)上执行此操作,但是,我知道抓取工具可能会从客户端获取JS。
我使用的非供应JS代码的示例;
window.location.href = "http://yourURL.com";
然而,抓取者获取PHP要困难得多,所以我想做类似的重定向,但是在PHP中。
如果有人可以就最佳方式分享他或她的意见,那就太棒了。
提前致谢!
答案 0 :(得分:1)
如PHP manual中所述:
[...]第二个特例是“Location:”标题。它不仅将此标头发送回浏览器,而且还向浏览器返回REDIRECT(302)状态代码,除非已经设置了201或3xx状态代码。
所以,你可以这样做:
<?php
header('HTTP/1.1 201 Created'); // or as of PHP 5.4: http_response_code(201);
header('Location: http://yourURL.com/');
我现在无法测试它,我不确定这会有效。
另一种可能性是“硬读”重定向地址的内容并将其显示在您的页面上:
<?php
$content = file_get_contents("http://yourURL.com/");
echo $content; // this will output the full HTML from the webpage.
注意:只有allow_url_fopen = On
中有php.ini
指令或有权以编程方式设置时,上述代码才有效:
<?php
ini_set('allow_url_fopen', 'on');
这将提供200
响应代码。
答案 1 :(得分:1)
除了发送HTTP代码,Javascript或HTML元刷新标记之外,PHP无法以任何其他方式重定向页面。如果您使用的是混淆的Javascript,这可能是最好的方法。
答案 2 :(得分:0)
你可以使用Php中的header()函数:
<?php
header('Location: http://yourURL.com/');
答案 3 :(得分:0)
您正在寻找header()
功能:
<?php
header("Location: http://yourURL.com/");
exit;
请确保之后exit
,否则当抓取工具忽略标题时,您的网页仍会构建并发送给它,我认为这不是您正在寻找的行为。