我想通过链接传递网址
我的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 .....
答案 0 :(得分:4)
我认为Xzibit对此有一个有用的观点:
短篇小说:当你想在链接中嵌入一个url时使用urlencode,我认为它会解决你的问题。
答案 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']);