【发布时间】:2011-11-25 13:17:38
【问题描述】:
我的问题与这个问题非常相似,但由于某种原因,那里的 .htaccess 解决方案对我不起作用: htaccess url as parameter
我想将未编码的 URL 作为 URL 变量传递给 PHP 脚本。如果我这样做,它会起作用:
http://mydomain.com/url.php?url=http://google.com
但如果我尝试在 .htaccess 的帮助下使用漂亮链接,例如:
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 )
【问题讨论】: