【发布时间】:2017-07-03 20:15:57
【问题描述】:
我有以下重写规则正在重写到同一位置:
http://test.com/finance/payroll/forms/salary-payment-form.shtml?staff=test-edu-trust -> 到 ->https://www.test.com/finance/BBBB.shtml?staff=test-edu-trust
RewriteRule %{QUERY_STRING} ^staff=test-edu-trust$
RewriteRule ^/finance/payroll/forms/salary-payment-form.shtml$ https://www.test.com/finance/BBBB.shtml?staff=test-edu-trust[R=301,L,NC]
http://test.com/finance/payroll/forms/wages-payment-form.shtml?staff=test-comm-rac -> 到 -> https://www.test.com/finance/BBBB.shtml?staff=test-comm-rac
RewriteRule %{QUERY_STRING} ^staff=test-comm-rac$
RewriteRule ^/finance/payroll/forms/salary-payment-form.shtml$ https://www.test.com/finance/BBBB.shtml?staff=test-comm-rac[R=301,L,NC]
问题是两者都重写到同一个位置 - https://www.test.com/finance/BBBB.shtml?staff=test-edu-trust
如果我将规则的顺序更改为以下,那么它们最终会按顺序重写到第一个位置:https://www.test.com/finance/BBBB.shtml?staff=test-comm-rac,如下所示:
RewriteRule %{QUERY_STRING} ^staff=test-comm-rac$
RewriteRule ^/finance/payroll/forms/salary-payment-form.shtml$ https://www.test.com/finance/BBBB.shtml?staff=test-comm-rac[R=301,L,NC]
RewriteRule %{QUERY_STRING} ^staff=test-edu-trust$
RewriteRule ^/finance/payroll/forms/salary-payment-form.shtml$ https://www.test.com/finance/BBBB.shtml?staff=test-edu-trust[R=301,L,NC]
是什么导致这里的规则顺序只是重写为第一个定义的规则,因为我认为 QUERY_STRING 会捕捉到这个并排序要重写到哪个 url??
【问题讨论】:
-
刚刚注意到我有 RewriteRule 而不是 RewriteCond 用于 QUERY_STRING !啊!!!
标签: mod-rewrite url-rewriting url-redirection