Apache 2.4 - блок IF для разных шаблонов URL - PullRequest
1 голос
/ 06 июня 2019

Я пытаюсь создать блоки в одном файле перезаписи и вызывать разные файлы перезаписи, если шаблон 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(.*)$/, разрешается любой URL, содержащий категорию1, а не URL, начинающийся с / category1
  2. 2-й и 3-й шаблон не работает и выдает синтаксическую ошибку регулярного выражения.

Я пробовал другой синтаксис без успеха

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

1 Ответ

1 голос
/ 06 июня 2019

Можете ли вы попробовать этот код с начальными привязками, добавленными в шаблон регулярного выражения:

<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>
...