Apache RewriteRule разрешает пустое значение после sh или указанных значений - PullRequest
0 голосов
/ 15 апреля 2020

Мне нужна помощь со следующим Apache RewriteRule

RewriteRule ^(customers)/(active|create)/?$ /mod/customers/?type=$2 [NC,L]

Это правило работает, только если есть что-то после / Например: http://example.com/customers/active

Это не будет работать, если URL будет http://example.com/customers

Как можно написать этот RewriteRule, чтобы http://example.com/customers работал, а также http://example.com/customers/active

/customers, за которым ничего не стояло или /customers, за которым следует /active или /create

1 Ответ

1 голос
/ 15 апреля 2020

Вы можете использовать это регулярное выражение:

^(customers)(?:/(active|create))?/?$

Он использует необязательную группу без захвата для разрешения URL, такого как http://example.com/customers, а также http://example.com/customers/active. `Active | create все еще сохраняется в группе 2.

Демонстрация для regex101

Это регулярное выражение допускает конечный / для URL, например http://example.com/customers/ или http://example.com/customers/active/. Если это нежелательно, просто удалите /? перед $, т.е.

^(customers)(?:/(active|create))?$

Демонстрация на regex101

...