我使用 Piwik 来跟踪我的网站访问者。出于“安全”考虑,我只允许index.php
少数已知 IP 访问。我的问题是 Piwik 选择退出代码段只能通过此 获得index.php
。
RewriteRule
我尝试通过和Location
/指令来解决这个问题Files
,但我无法只允许特定的 URL 参数而让其他参数拒绝。
对于那些不太了解 Piwik 但了解 Apache 的人来说,这里是一些基本要点:
- 可以使用管理 GUI,但
index.php
其访问仅限于已知 IP。 - Piwik 退出代码如下仅有的
index.php
可通过已知参数集获得:index.php?module=CoreAdminHome&action=optOut&lang=DE
我想要的是:
- 拒绝所有未知 IP 的访问
index.php
,但已知 IP 可以访问。(完成) index.php
允许所有 IP访问退出参数集。(待定)
如何在 Apache 中仅允许具有特定参数的 URL?
我试过:
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]