Como permitir somente URLs com parâmetros específicos no Apache?

3

Eu uso o Piwik para rastrear os visitantes do meu site. Por uma questão de "segurança", só permito o acesso a index.php de alguns IPs conhecidos. Meu problema é que o snippet de exclusão do Piwik só está disponível por meio deste index.php .

Eu tentei resolver isso por meio das diretivas RewriteRule e Location / Files , mas não posso permitir apenas o parâmetro de URL específico e deixar que outras pessoas neguem.

Para todas aquelas pessoas que não conhecem (muito) o Piwik, mas o Apache aqui, os pontos básicos:

  • A GUI administrativa está disponível via index.php , cujo acesso é limitado a IPs conhecidos.
  • O snippet de desativação do Piwik está disponível apenas via index.php com um conjunto de parâmetros conhecidos: index.php?module=CoreAdminHome&action=optOut&lang=DE

O que eu quero é:

  • Negar acesso a index.php de todos os IPs desconhecidos, mas IPs conhecidos. (feito)
  • Permitir acesso ao conjunto de parâmetros de desativação para index.php de todos os IPs. (pendente)

Como permitir somente URLs com parâmetros específicos no Apache?

Eu tentei:

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>
    
por burnersk 09.10.2012 / 11:09

1 resposta

2

Acho que você pode reduzir as regras para apenas:

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