我正在尝试编写一个Rewriterule,它从格式的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?
会导致重写将TARGET查询字符串的值附加到现有域 . -
%1
的值仅包含https
而不是https%3A%2F%2Fwww.example.com%2Fexample%2Fhelp%3Fparam%3D1
.
我知道这可能不是继续这项工作的最佳方式,我愿意接受建议 .
1 回答
您可以改用此规则:
重要的是在正则表达式中使用
.+
能够捕获TARGET
参数中指定的URL的所有字符 .这将重定向:
http://yourdomain.com/?TARGET=https://www.example.com/example/help?param=1
来https://www.example.com/example/help?param=1