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

Как разрешить только URL-адреса с определенным параметром в Apache?

Я использую Piwik для отслеживания посетителей моих сайтов. Из соображений безопасности я разрешаю доступ только к index.php несколько известных IP-адресов. Моя проблема в том, что фрагмент отказа Piwik доступен только через этот index.php.

Я пытался решить это через RewriteRuleи Location/Files директивы, но я не могу разрешить только конкретный параметр URL и позволить другим запретить.

Для всех тех, кто не знает (много) о Piwik, но об Apache, вот основные моменты:

Я хочу:

Как разрешить только URL-адреса с определенным параметром в Apache?

Я попытался:

Order allow,deny
Allow from all
<Files "index.php">
    Order allow,deny
    Deny from all
    Allow from 127.0.0.1
</Files>
RewriteEngine On
RewriteRule ^/piwik-opt-out.html$ index.php?module=CoreAdminHome&action=optOut [L]
<Location "/piwik-opt-out.html">
    Order allow,deny
    Allow from all
</Location>

Я думаю, вы можете сократить правила до:

RewriteEngine on
RewriteCond %{REMOTE_ADDR} !127\.0\.0\.1
RewriteCond %{QUERY_STRING} !action=optOut
RewriteRule index.php - [R=401]