我正在尝试编写一个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
。
我知道这可能不是继续这项工作的最佳方式,我愿意接受建议。
答案 0 :(得分:0)
您可以改用此规则:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^TARGET=(.+)$ [NC]
RewriteRule ^ %1? [NE,R=302,L]
在正则表达式中使用.+
以捕获TARGET
参数中指定的网址的所有字符非常重要。
这将重定向:
http://yourdomain.com/?TARGET=https://www.example.com/example/help?param=1
到
https://www.example.com/example/help?param=1