好的,所以我有一个这样的网址:
http://example.com/admin/test.php?action=edit&id=2
但是,我需要添加一条规则,以将其重定向到另一个带有如下查询字符串的 url:
http://example.com/admin/login.php?redirect=test.php%3Faction%3Dedit%26id%3D2
我添加了这样的规则:
RewriteRule ^admin/(.*)?$ /login.php?redirect=/admin/$1?%{QUERY_STRING} [R,L]
它在大多数情况下都有效,但有一个问题,查询字符串没有被转义,所以它认为这些是其他 $_GET 变量。它看起来像这样:
http://example.com/admin/login.php?redirect=test.php%3Faction=edit&id=2
所以重定向读取为 test.php?action=edit。它缺少 id=2,因为它将它作为另一个 $_GET 变量而不是 $_GET['redirect'] 的一部分来读取。
是否可以逃脱 %{QUERY_STRING} ?我用谷歌搜索了所有我能想到的东西,但在任何地方都找不到答案。