Назад | Перейти на главную страницу

фильтровать доступ администратора по IP с помощью httpd.conf

Я пытаюсь отфильтровать все URL-адреса серверной части на один IP-адрес в файле httpd.conf, используя этот фрагмент кода:

<Location /admin>
    Order deny,allow
    Deny from all
    Allow from 100.x.xxx.xxx
</Location>

Этот отлично работает. Но я не могу найти способ сделать то же самое с /? Q = admin.

<Location /?q=admin>
    Order deny,allow
    Deny from all
    Allow from 100.x.xxx.xxx
</Location>

Нужно ли мне какое-нибудь регулярное выражение с обратной косой чертой, чтобы избежать некоторых символов?

Проблема в том, что <Location><LocationMatch>) директивы не работают со строками запроса (то, что идет после ?) -- Видеть Этот ТАК вопрос & Документы Apache.

Вы можете сделать то же самое, используя mod_rewrite и немного творчества - Есть даже пример управления доступом на основе строки запроса в документах.

Что-то вроде того, что ниже, должно быть близко к тому, что вам нужно.

# Applying for all query strings (admin|user)
RewriteCond %{QUERY_STRING} ^q=.*
RewriteCond %{REMOTE_ADDR} !0\.1\.2\.3
# Something is missing here (result: domain.com/page?q=admin) but it works because the link dies anyway on an error page
RewriteRule ^(.*) /page [QSA,L,R=301]