0

我想通过链接传递一个网址

我的 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?

有人可以帮助我吗......

4

4 回答 4

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

于 2012-04-11T08:37:12.347 回答
1

这是不可能的,/斜杠是 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';
于 2012-04-11T10:38:51.153 回答
0

使用 RewriteRule 来匹配 URI 将不起作用,因为 Apache 会将多个斜杠剥离为 1。以下是使其成为可能的代码%{THE_REQUEST}

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+info/([^\s\?]+) [NC]
RewriteRule ^ index.php?url=%1 [L,QSA]
于 2012-04-11T12:42:52.630 回答
0

如果事关重大:

$_GET['url'] = str_replace('http:/', 'http://', $_GET['url']);
于 2012-04-13T02:53:04.263 回答