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