我有一个运行 apache2 和 php7 的网络服务器。
在我的 apache 配置中,有如下重定向规则:
RewriteCond %{HTTP_HOST} !^www.*
RewriteRule .* %{HTTP:X-Forwarded-Proto}://www.%{HTTP_HOST}%{REQUEST_URI} [QSA,R=301,L]
这应该执行重定向表单http(s)://example.com/scpript?param1=x¶m2=y
到http(s)://www.example.com/scpript?param1=x¶m2=y
它基本上可以工作,但有一个例外:只有第一个 get 参数被传递给重新写入的 url,所以我的客户端实际上接收的http(s)://www.example.com/scpript?param1=x
是重定向目标。
我很困惑,如何让系统传递完整的查询?
如果也尝试过
RewriteRule .* %{HTTP:X-Forwarded-Proto}://www.%{HTTP_HOST}%{REQUEST_URI}?%{QUERY_STRING} [QSA,R=301,L]
但这会将我重定向到http(s)://www.example.com/scpript?param1=x¶m1=x
。在重写生效之前,似乎有一些东西省略了其他参数。