[英]What does this apache rewrite means?
RewriteCond %{QUERY_STRING} (.*)\?mem=stats$
RewriteRule ^/(.*)$ http://X.X.X.X/$1?%1 [P,L]
如果请求是/asdf?mem=stats
,它将重写为/asdf?mem=stats?asdf
吗?
因为$1
是asdf?mem=stats
而%1
是asdf
???
%{QUERY_STRING}
变量包含查询字符串,但不包含前导?
(或其之前的任何内容),因此%1
绝不会在查询字符串之前包含请求的一部分。
如果通过在VirtualHost配置中添加LogLevel rewrite:trace6
来启用mod_rewrite日志记录,您将在RewriteCond和/asdf?mem=stats
请求中看到以下内容:
... RewriteCond: input='mem=stats' pattern='(.*)\\?mem=stats$' => not-matched
另外,在您的RewriteRule
,模式将与主机名和端口之后,查询字符串之前的URL部分匹配。 因此,即使通配符匹配, $1
也将不包含请求的查询字符串部分。 您可以在日志中看到以下内容:
... applying pattern '^/(.*)$' to uri '/asdf'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.