Christian Seiler: LocationMatch...ich checks nicht

Beitrag lesen

Hallo Peter,

Wieso bekomme ich aber ein Deny sowohl für /cgi-bin/awstats.pl als auch für /cgi-bin/awstats.pl?config=site1 ?

Weil sich LocationMatch nur auf den Pfad-Teil des URI beschränkt, d.h. der Query-String wird vorher abgetrennt. Sprich: <LocationMatch "/cgi-bin/awstats.pl$"> macht zwar /cgi-bin/awstats.plHalliHallo oder /cgi-bin/awstats.pl/Ciao nicht, aber /cgi-bin/awstats.pl?irgendwas schon.

Wenn Du an Hand von Query-Strings Zugriffe verbieten willst, dann bleibt Dir vermutlich nur mod_rewrite übrig, wo Du per RewriteCond Query-Strings auf ihren Inhalt überprüfen kannst, also zum Beispiel sowas:

# Wenn mod_rewrite zur Verfügung steht  
<IfModule mod_rewrite.c>  
RewriteEngine On  
  
# Leere Query-String verbieten  
RewriteCond %{QUERY_STRING} =""  
RewriteRule /cgi-bin/awstats\.pl$ -  [F]  
  
# awstats.pl* verbieten  
RewriteRule /cgi-bin/awstats\.pl.+$  - [F]  
</IfModule>  
  
# Wenn es nicht zur Verfügung steht  
<IfModule !mod_rewrite.c>  
<Location /cgi-bin/awstats.pl>  
# Sicherheitshalber komplett verbieten  
Order deny,allow  
Deny from all  
</Location>  
</IfModule>

Ungetestet, sollte aber funktionieren (in der zentralen Config oder einer VHost-Config).

Viele Grüße,
Christian