htaccess Zugriff auf Dateien durch Erweiterung zulassen?
Sah ich mehrere htaccess-Beispiel deaktivieren Sie einige Dateien, um Zugriff:
<Files ~ "\.(js|sql)$">
order deny,allow
deny from all
</Files>
zum Beispiel, dies verhindert den Zugriff auf alle .JS-und .SQL-Dateien, die anderen sind aktiviert. Ich will das Gegenteil! Ich will diese Dateien werden AKTIVIERT, alle anderen zu verhindern. Wie dies zu erreichen?
InformationsquelleAutor der Frage user893856 | 2011-10-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorapsak die Antwort ist fast richtig. Es ist eigentlich
Müssen Sie die order-Direktive am oberen (und brauchen Sie nicht irgendetwas anderes).
Das interessante an der Sache ist, es scheint, können wir nicht einfach negieren, regex in FilesMatch, das ist... seltsam, vor allem, da das "!" bewirkt, dass kein server-Fehler oder so etwas. Nun, duh.
und ein bisschen Erklärung:
Um die Ursache informiert den server über seinen Standard-Verhalten erwartet. Die
sagt der server zum verarbeiten der "allow" - Richtlinie Erstens: wenn eine Anforderung übereinstimmt, die Richtlinie zulassen, ist markiert als in Ordnung. Dann wird die "deny" - Richtlinien sind evaulated: wenn eine Anforderung übereinstimmt, die deny-Direktiven, es verweigert (es spielt keine Rolle, ob es erlaubt war, im ersten Durchgang). Wenn keine übereinstimmungen gefunden wurden, wird die Datei verweigert.
Die Richtlinie
arbeitet den umgekehrten Weg: zunächst verarbeitet der server die "deny" - Direktiven: wenn eine Anforderung entspricht, ist markiert verweigert werden. Dann die "zulassen" - Richtlinien sind evaulated: wenn eine Anfrage entspricht einer Richtlinie zulassen, es ist erlaubt, auch wenn es passt eine deny-Direktive früher. Wenn eine Regel passt nichts, die Datei ist erlaubt.
In diesem speziellen Fall, der server zuerst versucht, die Richtlinien erlauben: es sieht, dass js und sql-Dateien erlaubt sind, so dass eine Anfrage an foo.js geht durch; eine Anfrage an bar.php entspricht nicht den Richtlinien, so wird es verweigert.
Wenn wir tauschen die Direktive "order deny,allow", dann foo.js Durchlaufen wird (für js), und bar.php auch durch zu gehen, wie es passt kein Muster.
oh und eine weitere Sache: Richtlinien in einer Abschnitt (d.h. < Files> und < Directory>) werden immer evaulated nach den Hauptteil der .htaccess-Datei überschrieben wird. Das ist, warum Vorapsak die Lösung nicht funktioniert, wie inteded: der main .htaccess verweigert die Anfrage, dann die < Files> Bestellung bearbeitet wurde, und es erlaubt die Anfrage.
Htaccess ist Magie der schlechtesten Art, aber es gibt Logik.
InformationsquelleAutor der Antwort SáT
Haben Sie versucht, die Einstellung einer
außerhalb (vor) dem tag, dann Wechsel die
zu
innen? So etwas wie
InformationsquelleAutor der Antwort Vorapsak
Können Sie ändern die Datei die Berechtigung "600", so können Sie einfach darauf zugreifen über Ihr Skript, und es wird verweigern den direkten Zugriff.
http://php.net/manual/en/function.chmod.php
InformationsquelleAutor der Antwort Mohamad Hamouday