2017-01-23 6 views
1

Ich möchte den Zugriff für einige IPs auf meiner Website vollständig verweigern. Zusätzlich möchte ich den Zugriff für einige andere IPs nur auf eine bestimmte Datei verweigern. Das Problem ist, dass die zweite Regel die erste zu überschreiben scheint.Kombinieren Sie mehrere FilesMatch-Regeln in htaccess

<FilesMatch ""> 
order allow,deny 
allow from all 
deny from 1.1.1.1 
</FilesMatch> 

<FilesMatch "^file\.exe$"> 
order allow,deny 
allow from all 
deny from 2.2.2.2 
</FilesMatch> 

In diesem abgespeckte Beispiel 1.1.1.1 erhält Zugang zu file.exe obwohl sie tatsächlich von der ersten Regel blockiert wurden.

Erwartetes Ergebnis: 1.1.1.1 hat keinen Zugriff auf irgendetwas (inkl. Datei.exe), 2.2.2.2 hat Zugriff auf die Website, aber nicht auf Datei.exe.

Was mache ich falsch?

Antwort

0

Fügen Sie deny from 1.1.1.1 zum zweiten hinzu. Wie Sie sagen, die allow from all im zweiten Block überschreibt die erste für file.exe. Entfernen Sie auch das leere FileMatch für das erste, es tut nichts.

order allow,deny 
allow from all 
deny from 1.1.1.1 

<FilesMatch "^file\.exe$"> 
order allow,deny 
allow from all 
deny from 1.1.1.1 
deny from 2.2.2.2 
</FilesMatch> 

Oder für einen einfacheren Ansatz, könnten Sie dies versuchen:

order allow,deny 
allow from all 
deny from 1.1.1.1 

<FilesMatch "^file\.exe$"> 
deny from 2.2.2.2 
</FilesMatch> 

Bitte lassen Sie mich wissen, wie Sie auf bekommen.

+0

Nun, ich hatte diesen Gedanken auch, aber 1.1.1.1 ist nur ein kurzes Beispiel. In Wirklichkeit gibt es eine lebende Liste von etwa 20 Zeilen + Kommentare. Ich möchte hier definitiv keine Redundanz schaffen, die synchron gehalten werden muss. Auch in Ihrem zweiten Beispiel fehlt wahrscheinlich die vorgeschlagene Zeile. Davon abgesehen, scheint der FileMatch-Bereich irgendwie den Rest der htaccess-Datei zu stören. Anstelle von 403 bekomme ich ERR_TOO_MANY_REDIRECTS. Aber das ist nur ein Seitenknoten, um darauf hinzuweisen, dass die leere FilesMatch irgendwie Sinn macht. – CodeX

+0

Das Umleitungsproblem liegt an 'ErrorDocument 403 /' - Ich habe das für Testzwecke entfernt und werde eine andere Lösung dafür finden, wenn ich Ihren Vorschlag zur Arbeit bekommen kann. Das Problem mit Ihrem zweiten Vorschlag ist, dass es implizit die allow-Anweisung überschreibt, so dass auf file.exe von 1.1.1.1 zugegriffen werden kann - Sie können das durch 127.0.0.1 oder :: 1 ersetzen, um das lokal einfach zu versuchen, wenn Sie mögen. – CodeX

Verwandte Themen