【发布时间】:2014-07-11 13:12:59
【问题描述】:
我有一个用于重定向到外部站点的页面。输出页面使用 GET 检索外部站点链接,但当外部站点具有 URL 参数时,我无法使 URL 重写正常工作。我想更改以下内容
来自: http://www.example.com/out.php?url=http://www.externalsite.com?abc=def
到: http://www.example.com/out/http://www.externalsite.com?abc=def
这是我目前拥有的代码:
RewriteRule ^out/(.*) out.php?url=$1 [QSA,L]
这可行,但 ?abc=def 在重写期间丢失。有没有办法将它包含在 URL 重写中?谢谢
【问题讨论】:
-
使用 urlencoding,更安全,更有效,搜索示例,大量示例...
-
使用
QSA标志,abc=def部分不会丢失,只会合并。您不能在同一个 URL 中有 2 个查询字符串,因此您的第一个示例 URL 已损坏,这就是 Apache 不会生成它的原因。以另一种方式提取查询字符串或使用小型 PHP 脚本进行更细粒度的控制。
标签: php .htaccess mod-rewrite url-rewriting