3 votes

Comment autoriser uniquement les URL avec un paramètre spécifique dans Apache ?

J'utilise Piwik pour suivre les visiteurs de mes sites web. Par mesure de "sécurité", je n'autorise l'accès qu'aux personnes suivantes index.php quelques IP connues. Mon problème est que le snippet d'opt-out de Piwik n'est disponible que par l'intermédiaire de ceci index.php .

J'ai essayé de résoudre ce problème via RewriteRule et Location / Files mais je ne pourrai pas autoriser uniquement le paramètre spécifique de l'URL et laisser les autres refuser.

Pour tous ceux qui ne connaissent pas (beaucoup) Piwik mais Apache voici les points de base :

  • L'interface graphique administrative est disponible via index.php dont l'accès est limité aux IP connues.
  • L'extrait d'exclusion de Piwik est le suivant sólo disponible via index.php avec un ensemble de paramètres connus : index.php?module=CoreAdminHome&action=optOut&lang=DE

Ce que je veux, c'est :

  • Refuser l'accès à index.php de tous les IPs inconnus mais des IPs connus. (fait)
  • Permettre l'accès au paramètre d'opt-out défini pour index.php de toutes les IP. (en attente)

Comment autoriser uniquement les URL avec un paramètre spécifique dans Apache ?

J'ai essayé :

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>

0 votes

Pouvez-vous afficher rapidement votre règle que vous avez sur index.php en ce moment ?

0 votes

Fait, @MarkHenderson

2voto

Anastasiosyal Points 2057

Je pense que vous pouvez réduire les règles à juste :

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

2 votes

La principale chose à retenir ici est que la RewriteRule ne fonctionne que sur la partie URL, pas sur la partie paramètre. Si vous souhaitez effectuer des actions sur la partie paramètre, testez le %{QUERY_STRING}.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X