Мне нужно ограничить конкретный шаблон строки запроса, который имеет URL-адрес, как показано ниже
https://beta-portal.example.com/public/wp-login.php?redirect_to=http://demo.testfire.net
Мне нужно ограничить значение redirect_to до https: //*.example.com, если какой-либо другой URL-адрес передается в redirect_to, он должен отправить запрещенную ошибку 403.
Я пробовал что-то вроде его, но оно не работает должным образом. Он всегда отправляет 403 запрещенную ошибку.
RewriteCond %{QUERY_STRING} !.*redirect_to=*.example.com.* [NC]
RewriteRule "" "-" [F]
Не могли бы вы помочь мне с правильным синтаксисом для реализации вышеуказанного правила отрицания.
Заранее спасибо.
RewriteEngine On
RewriteCond %{QUERY_STRING} ^redirect_to [NC]
RewriteCond %{QUERY_STRING} !^redirect_to=https://.+\.example\.com$ [NC]
RewriteRule "" "-" [F]
Разрешить доступ к запросам со строкой запроса (и без строки запроса)
?foo=bar
?redirect_to=https://foo.example.com
?redirect_to=https://BAR.example.com
Запретить доступ к запросам со строкой запроса
?redirect_to
?redirect_to=
?redirect_to=abc
?redirect_to=https://example.com
?redirect_to=https://.example.com
Если убрать первый RewriteCond
, то ТОЛЬКО запросы со строкой запроса redirect_to=https://*.example.com
разрешается. Запросы с любой другой строкой запроса или без строки запроса запрещены.