我有一个名为“goto”的目录和一个名为index.php的文件。目前,以下内容位于index.php文件中:
<?php
$url = $_GET['url'];
header("Location: $url");
?>
目前要重定向到另一个网址,我必须在地址栏中输入:
http://mysite.com/goto/?url=http://google.com
如果您能告诉我如何更改该网址以便我可以通过在地址栏中输入以下内容将用户重定向到网站,我将不胜感激:
http://mysite.com/goto/http://google.com
答案 0 :(得分:7)
使用mod_rewrite
和.htaccess将http://mysite.com/goto/http://google.com
重写为http://mysite.com/goto/?url=http://google.com
RewriteEngine On
RewriteRule ^goto/(.+)$ /goto/?url=$1 [L]
根据您的服务器配置,您可能需要在重写路径中加入/
(即^/goto/(.+)$
)。
答案 1 :(得分:2)
除非您想成为恶意软件中心,否则我会全心全意地建议您不要这样做。
如果您希望以这种方式允许重定向,请使用http://mysite.com/goto/google,然后从可用的,允许的目的地的白名单中计算出域名。
答案 2 :(得分:0)
您需要解析可能有点棘手的数据,因为您必须区分网址与其他网址之间的差异。
我的建议是不要这样做,因为第二个标题已启动,你将看不到网址,你最好将其作为get语句或帖子传递。
修改的
如果你确定了,那么parse_url()就是你想要的。 :)
答案 3 :(得分:0)
@ ide的方法可行...但您也可以让PHP脚本检查$_SERVER['PATH_INFO']
,这就是将URL的这一部分传递给CGI脚本的方式。
(虽然,如果那里有问号,你还必须要么确保它的URI编码,要么也得到QUERY_STRING;你也会在哈希之后丢失任何部分,但是你有你当前的计划也存在同样的问题)