【问题标题】:QUERY_STRING Rewrite orderQUERY_STRING 重写顺序
【发布时间】: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


【解决方案1】:

刚刚注意到我有 RewriteRule 而不是 RewriteCond 用于 QUERY_STRING !呵呵!!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多