【发布时间】:2016-08-13 00:16:24
【问题描述】:
我正在尝试编写一个重写器,它从格式的 URL 获取域
https://www.example.com/sample?TARGET=https%3A%2F%2Fwww.example.com%2Fexample%2Fhelp%3Fparam%3D1.
如果存在TARGET 参数,我需要将用户重定向到TARGET 查询参数中的值。我的重写规则如下:
RewriteCond %{QUERY_STRING} TARGET=([-a-zA-Z0-9_+]+)
RewriteRule ^(.*)$ %1? [R=302,L]
由于两个问题,这不起作用:
重写规则中的
%1?导致重写将目标查询字符串的值附加到现有域。%1的值只包含https而不是https%3A%2F%2Fwww.example.com%2Fexample%2Fhelp%3Fparam%3D1。
我知道这可能不是最好的方法,我愿意接受建议。
【问题讨论】:
-
但是如果你已经解码了 URL,例如
https://www.example.com/sample?TARGET=https://www.example.com/example/help?param=1然后规则可以重定向。 -
我都试过了..点后的值被切断..只留下https
标签: apache .htaccess mod-rewrite url-rewriting