用php编写客户端重定向服务器端

时间:2015-07-28 20:29:56

标签: javascript php .htaccess redirect

我正在寻找客户端重定向到PHP中的另一个域。

我不想进行301 - 302 - 307等重定向的原因是因为我希望该页面向抓取工具发送200 HTTP OK响应。

通常我使用混淆的JavaScript在静态虚拟主机(如S3)上执行此操作,但是,我知道抓取工具可能会从客户端获取JS。

我使用的非供应JS代码的示例;

window.location.href = "http://yourURL.com";

然而,抓取者获取PHP要困难得多,所以我想做类似的重定向,但是在PHP中。

如果有人可以就最佳方式分享他或她的意见,那就太棒了。

提前致谢!

4 个答案:

答案 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/');

文档:http://php.net/manual/en/function.header.php

答案 3 :(得分:0)

您正在寻找header()功能:

<?php
header("Location: http://yourURL.com/");
exit;

请确保之后exit,否则当抓取工具忽略标题时,您的网页仍会构建并发送给它,我认为这不是您正在寻找的行为。