我想通过链接传递一个网址
我的 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?
有人可以帮助我吗......
我想通过链接传递一个网址
我的 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?
有人可以帮助我吗......
我认为 Xzibit 对此有一个正确的观点:
短篇小说:当您想在链接中嵌入 url 时使用 urlencode,我认为它会解决您的问题。
这是不可能的,/
斜杠是 url 分隔符。在用作参数之前,您必须对其进行编码。例如 :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';
使用 RewriteRule 来匹配 URI 将不起作用,因为 Apache 会将多个斜杠剥离为 1。以下是使其成为可能的代码%{THE_REQUEST}
:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+info/([^\s\?]+) [NC]
RewriteRule ^ index.php?url=%1 [L,QSA]
如果事关重大:
$_GET['url'] = str_replace('http:/', 'http://', $_GET['url']);