我有一个规则,将旧式的网址翻译成新的风格。它的工作原理确定只要我使用的参数相同的顺序查询:Apache mod_rewrite查询字符串没有特定的顺序
RewriteCond %{QUERY_STRING} ^country=([a-z]{2})&id=([0-9]+)$ [NC]
RewriteRule ^(.*)$ http://%1.localhost/%2? [R=301,L]
所以URL本地主机/ index.php的国家= US & ID = 1234会去us.localhost/1234
但问题是,使用localhost/index.php?id = 1234 & country = us(请注意参数按顺序交换),那么当然不适用规则。
我想过单独改变规则来处理参数,是这样的:
RewriteCond %{QUERY_STRING} country=([a-z]{2}) [NC]
RewriteCond %{QUERY_STRING} id=([0-9]+) [NC]
RewriteRule ^(.*)$ http://%1.localhost/%2? [R=301,L]
但进入本地主机/ index.php文件ID = 1234 &国时= US我得到1234.localhost /我们是不是我所期望的(我期望第一个cond给我%1和第二cond%2,但它似乎不是这样确定的顺序)
有没有简单的方法来实现这一目标?当然,我可以编写两个单独的规则来处理每个案例,但是想知道是否可以使用某种通用方法(想想如果我们有3个参数,那么排列会使这个难以管理)