Я использую Piwik для отслеживания посетителей моих сайтов. Из соображений безопасности я разрешаю доступ только к index.php
несколько известных IP-адресов. Моя проблема в том, что фрагмент отказа Piwik доступен только через этот index.php
.
Я пытался решить это через RewriteRule
и Location
/Files
директивы, но я не могу разрешить только конкретный параметр URL и позволить другим запретить.
Для всех тех, кто не знает (много) о Piwik, но об Apache, вот основные моменты:
index.php
доступ к которому ограничен известными IP-адресами.index.php
с известным набором параметров: index.php?module=CoreAdminHome&action=optOut&lang=DE
Я хочу:
index.php
со всех неизвестных IP-адресов, но с известными IP-адресами. (сделано)index.php
со всех IP. (ожидается)Как разрешить только 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]