Как разрешить только URL с определенным параметром в Apache?
Я использую Piwik для отслеживания посетителей моих сайтов. В целях "безопасности" я разрешаю доступ только к index.php
несколько известных IP-адресов. Моя проблема в том, что фрагмент отказа Piwik доступен только через этот index.php
,
Я пытался решить это с помощью RewriteRule
и Location
/Files
директивы, но я не смогу разрешить только конкретный параметр URL, а другие запретят.
Для всех тех людей, которые не знают (много) Piwik, но Apache здесь основные моменты:
- Административный графический интерфейс доступен через
index.php
доступ к которому ограничен известными IP-адресами. - Фрагмент отказа от Piwik доступен только через
index.php
с известным набором параметров:index.php?module=CoreAdminHome&action=optOut&lang=DE
Что я хочу это:
- Запретить доступ к
index.php
со всех неизвестных IP-адресов, но известных IP-адресов. (сделанный) - Разрешить доступ к параметру opt-out для
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>
1 ответ
Решение
Я думаю, что вы можете сократить правила просто:
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !127\.0\.0\.1
RewriteCond %{QUERY_STRING} !action=optOut
RewriteRule index.php - [R=401]