Значение строки запроса перенаправления Apache, равное конкретному домену

Мне нужно ограничить конкретный шаблон строки запроса, который имеет URL-адрес, как показано ниже

https://beta-portal.example.com/public/wp-login.php?redirect_to=http://demo.testfire.net

Мне нужно ограничить значение redirect_to значением https: //*.example.com, если в redirect_to передаются любые другие URL-адреса, он должен отправить 403 запрещенную ошибку.

Я пытался что-то вроде ниже его, но это не работает, как ожидалось. Это всегда отправляет на 403 запрещенную ошибку.

   RewriteCond     %{QUERY_STRING} !.*redirect_to=*.example.com.* [NC]

   RewriteRule "" "-" [F]

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

Заранее спасибо.

1 ответ

Решение
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 разрешены. Запросы с любой другой строкой запроса или без строки запроса запрещены.

Другие вопросы по тегам