Apache 2.4 - 不同 url 模式的 IF 块

Apache 2.4 - IF block for different url patterns

我正在尝试在一个重写文件中创建 if 块,并在 url 模式匹配时调用不同的重写文件

<If "%{REQUEST_URI} =~ /category1(.*)$/">
    Include conf.d/sites/abc/301_redirections_category1.conf
</If>
<ElseIf "%{REQUEST_URI} =~ /category2/subcategory1(.*)$/">
    Include conf.d/sites/abc/301_redirections_category21.conf
</ElseIf>
<Else "%{REQUEST_URI} =~ /category2/subcategory2(.*)$/">
    Include conf.d/sites/abc/301_redirections_category22.conf
</Else>

我面临的问题:

  1. 对于第一个模式,/category1(.*)$/,它允许任何包含 category1 而不是 url 的 url 以 /category1
  2. 开头
  3. 第 2 和第 3 模式不工作并给出正则表达式语法错误。

我尝试了不同的语法但没有成功

  1. m#/category1(.*)$/#i
  2. m#/\s/category1(.*)$/#i
  3. m#/\/category1(.*)$/#i
  4. m#\s/category2\s/sucategory1(.*)$/#i

您能否尝试在您的正则表达式模式中添加起始锚点的代码:

<If "%{REQUEST_URI} =~ m#^/category1#">
    Include conf.d/sites/abc/301_redirections_category1.conf
</If>
<ElseIf "%{REQUEST_URI} =~ m#^/category2/subcategory1#">
    Include conf.d/sites/abc/301_redirections_category21.conf
</ElseIf>
<ElseIf "%{REQUEST_URI} =~ m#^/category2/subcategory2#">
    Include conf.d/sites/abc/301_redirections_category22.conf
</ElseIf>