我的问题与此问题非常相似,但出于某种原因,.htaccess解决方案对我不起作用: htaccess url as parameter
我想将一个非编码的URL作为URL变量传递给PHP脚本。如果我这样做,它可以工作:
http://mydomain.com/url.php?url=http://google.com
但如果我尝试在.htaccess的帮助下使用prettylinks,那就不行了,例如:
http://mydomain.com/url/http://google.com
我的.htaccess代码:
RewriteRule ^url/(.*)$ url.php?url=$1 [B,QSA]
我正在使用$ _GET ['url']来捕获PHP中的变量并回显它。正如您从页面输出中看到的那样,它是超级接近的。问题似乎是URL中的第二个斜杠没有通过:
Input URL = http:/google.com
有什么想法吗?
修改
我 sorta 通过编写这个PHP修复它:
// Input vars
$url = $_GET['url'];
// Reformat URL because htaccess fvcks it up
if (substr($url,0,6) == "http:/" && substr($url,6,1) != "/")
$url = str_replace("http:/","http://",$url);
但是我注意到如果我向URL变量本身添加任何变量,它们会在$ _GET数组的单独索引中传递:
http://mydomain.com/url/http://google.com/?a=123
结果:
$_GET = Array ( [url] => http:/google.com/ [a] => 123 )
和
http://mydomain.com/url?url=http://google.com/?a=123
结果:
$_GET = Array ( [url] => http://google.com/?a=123 )
答案 0 :(得分:0)
请勿在GET中使用http:
前缀和:
,并且通常在网址中使用$_GET['url']
。这就是导致错误的原因。服务器停止在那里读取http:
,因为它检测到另一个http请求。只是不要使用:
或其中包含file:
的任何内容(就像{{1}}一样)。
答案 1 :(得分:0)
您可能需要htmlspecialchars()您传递的网址。