如何使用htaccess将url作为链接中的值传递?

时间:2012-04-11 08:30:28

标签: php .htaccess

我想通过链接传递网址

我的htaccess代码是:

RewriteRule ^info/(.*)$ folder1/page1.php?url=$1 [L]

但我的结果是:

$_GET['url'] = http:/stackoverflow.com (one slash is missing , http:/)

我需要$ _GET ['url']作为http://stackoverflow.com

如何使用htaccess?

有人可以帮我PLZ .....

4 个答案:

答案 0 :(得分:4)

我认为Xzibit对此有一个有用的观点:

http://cdn.memegenerator.net/instances/400x/18286577.jpg http://cdn.memegenerator.net/instances/400x/18286681.jpg

短篇小说:当你想在链接中嵌入一个url时使用urlencode,我认为它会解决你的问题。

http://php.net/manual/en/function.urlencode.php

答案 1 :(得分:1)

它不可能,/斜线是url separetor。您必须在用作参数之前对其进行编码。例如:site.com/info/http%3A%2F%2Fstackoverflow.com

$url = isset($GET['url']) ? urldecode($GET['url']) : 'default';

或者最好不要使用http://。并site.com/info/stackoverflow.com。在php:

$url = isset($GET['url']) ? 'http://'.$GET['url'] : 'default';

答案 2 :(得分:0)

使用RewriteRule匹配URI将无法正常工作,因为Apache会将多个斜杠删除为1.以下代码可以使用%{THE_REQUEST}

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+info/([^\s\?]+) [NC]
RewriteRule ^ index.php?url=%1 [L,QSA]

答案 3 :(得分:0)

如果推动推动:

$_GET['url'] = str_replace('http:/', 'http://', $_GET['url']);