【发布时间】:2012-11-14 13:30:57
【问题描述】:
我想从 perl 做一个代理重定向。我一直在使用 Location Header 进行重定向。
print ("Location: http://www.example.com\n");
问题在于客户端的 url 更改为新的(即 www.example.com )。我不希望这种情况发生,因此最终用户不知道我们从哪个位置提供请求。
【问题讨论】:
-
您想成为代理还是重定向客户端? “代理重定向”没有意义。
-
我想将用户重定向到不同的 url,但是最终用户应该无法在他的浏览器中看到它。基本上我想模拟使用 Rewrite 在 .htaccess 中可以实现的功能,即
Options +FollowSymLinks RewriteEngine on RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^(.*)$ http://localhost/%1? [R=302,P]在这里,我可以将用户重定向到不同的 url,而无需用户了解它。我们可以在 perl 中做到这一点吗? -
您的 RewriteRule 示例实际上会使用 302 重定向来重定向用户。如果您不希望用户在他们的浏览器中看到位置变化,您需要自己从所需的 URL 获取内容,并将其发送到用户的浏览器(请注意相关链接/图像等将不起作用除非您修复它们),或者输出一个框架集,该框架集在框架内加载内容,以便地址栏仍然包含脚本的 URL。
-
其实再看一遍,你的 RewriteRule 是用“P”做代理,也用 R=302 做重定向。这没有任何意义。
标签: perl proxy perl-module http-redirect