本质上,我试图使用(出于此问题范围之外的原因)使用查询字符串参数的第一个字符来负载平衡两台服务器,以便决定发送流量的服务器。
为了解释我到目前为止的情况,如果我们将“user”作为参数,并假设有两个服务器。服务器1用于为名称以A和M之间的字母开头,以及第二个服务器为N到Z的用户提供服务。
例如,请求
https://www.example.com/service/ <?强> 用户=保
会去
的https:// * A-m.internal * example.com /服务/用户=保罗
请求
https://www.example.com/service/ <?强> 用户=奥拉
会去
的https:// *正z.internal * example.com /服务/用户=奥拉
到目前为止,我有这样的事情:
RewriteEngine On
RewriteCond %{Query_String} ^[\?\&]user=[n-z].*
RewriteRule ^(.*) https://n-z. internal .example.com/service/$1 [P]
RewriteRule ^(.*) https://a-m.internal.example.com/service/$1 [P,L]
首先,我只是重写它是否为n-z,并将URL附加到规则($ 1)。如果它与n-z不匹配,那么我默认将它发送到a-m。
我是mod_rewrite的新手,我似乎无法找到符合我要求的组合或排列。
有人能解释为什么我没有得到预期的结果吗? 谢谢!
答案 0 :(得分:0)
试试这个:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
RewriteCond %{QUERY_STRING} ^(.*\&)?user=[a-m]
RewriteRule ^(.*)$ https://a-m.internal.example.com/$1 [QSA,P]
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
RewriteCond %{QUERY_STRING} ^(.*\&)?user=[n-z]
RewriteRule ^(.*)$ https://n-z.internal.example.com/$1 [QSA,P]