Перенаправление общего доступа Htacess, исключающее определенную строку

#regex #apache #.htaccess #redirect

#регулярное выражение #apache #.htaccess #перенаправление

Вопрос:

Я пытаюсь настроить перенаправление для всех, которое исключает определенные строки.

Для общего доступа я использую регулярное выражение:

 ^(.*)$
  

Как бы я ни хотел исключить URL-адреса, такие как domain.com/wp-admin /* и /wp-login.php

Я придумал это регулярное выражение, но оно не работает:

 ^(?!(?:wp-admin/.*|wp-login.php.*))(.*)$
  

Любая помощь очень ценится.

Спасибо

Ответ №1:

В вашем примере вы не выполняете экранирование / после wp-admin (или . между login и php ), и любая последовательность символов .* для просмотра может быть в начале. Что касается этого:

 ^(?!.*wp-admin/.*|.*wp-login.php)(.*)$
  

должно быть в порядке: https://regex101.com/r/j9IWcn/1

С:

  • (?!.*wp-admin/.*|.*wp-login.php) : отрицательный прогноз, говорящий, что нет
    • нулевой или неограниченный символ, за которым следует «wp-admin/*» (с * здесь в качестве подстановочного знака) или
    • нулевой или неограниченный символ, за которым следует «wp-login.php «
  • (.*) : все, что угодно, только для проверки остальной части ввода