Apache DirectorySlash Off - Site-Pausen
Wenn ich DirectorySlash Off
in meinem .htaccess
- Datei und rufen Sie das Verzeichnis ohne der trailing slash bekomme ich eine 403-Forbidden
von meinem server. Wenn ich es nennen-mit slash funktioniert alles einwandfrei.
Könnte jemand erklären, warum? Hier sind meine vollständig anonymisiert .htaccess
:
# GLOBAL CONFIG
Options +FollowSymlinks
DirectorySlash Off
AddDefaultCharset utf-8
php_value post_max_size 256M
php_value upload_max_filesize 256M
# BEGIN WordPress
RewriteEngine On
RewriteBase /folder/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /folder/index.php [L]
# END WordPress
# REMOVE WWW
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain.com$1 [R=301,L]
InformationsquelleAutor gearsdigital | 2010-07-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie Sie wissen pro die Dokumentation, wenn
DirectorySlash
eingestellt istOff
Anfragen zu/folder
nichtDirectoryIndex
ausgewertet. Dies bedeutet, dass die Anforderung wird nicht automatisch zugeordnet werden/folder/index.php
.mod_dir
führt diese Prüfung in der "Korrektur" - phase die request-Verarbeitung.mod_rewrite
, die verantwortlich ist für IhreRewriteRule
Definitionen, auch führt die Verarbeitung in dieser phase, wenn Sie die Regeln festlegen, die in einem.htaccess
Datei.Jedoch, programmiert wurde es mit dem Bewusstsein von Modulen wie
mod_dir
, und enthält eine überprüfung, um sicherzustellen, dass das aktuelle Verzeichnis angefordert wurde, mit einem nachgestellten Schrägstrich. Wenn nicht, lehnt Sie um die Anfrage zu behandeln, da dies könnte führen zu undefinierten Verhalten.Antrag geht dann an die content-generation-phase, die, da die Anfrage wurde nicht zugeordnet, um eine echte Datei, die bearbeitet wird
mod_autoindex
. DaIndexes
sind Behinderte, die auf Ihrem host standardmäßigmod_autoindex
zurück403 Forbidden
ist das, was Sie sehen.Beachten Sie, dass seit
DirectoryIndex
ist nicht evaluiert, auch wennmod_rewrite
wurden um die Anforderung zu verarbeiten, wäre es immer noch nicht, da kein auto-Auflösung zuindex.php
auftreten würde, und Ihre Regelwäre nicht entsprechen, weil die
.
erfordert ein match auf etwas, (aber die Anfrage wäre leer).Aktivieren
DirectorySlash
verhindert dieses Szenario, indem korrigiert wird, verhindert Maßnahmen in allen oben genannten Szenarien, mit Ausnahme der letzten note, die durch die Tatsache, dassDirectoryIndex
Karten die Anfrageindex.php
sowieso.Aber was ist, wenn wir wollen, zu verschleiern unsere Verzeichnisstruktur und trotzdem
mod_rewrite
für jede Anforderung? Sagen wir mal ich habe eine Website mit einem/private
- Verzeichnis. Apache umleiten würde mich/private/
wenn ich Anfrage/private
wennDirectorySlash
istOn
, so lassen Offenlegung von Informationen zu nehmen. Was ist, wenn ich gerade senden möchten/private
zu meinemindex.php
front-controller?InformationsquelleAutor Tim Stone
Mit Apache 2.4 können Sie es schreibt .htaccess-Dateien, indem Sie
RewriteOptions AllowNoSlash
.Sehen Apache-Dokumentation zu mod_rewrite
InformationsquelleAutor Tom
Denke ich, denn wenn man DirectorySlash aus, deaktivieren Sie die AutoKorrektur der url und es wird versucht zu zeigen, die Verzeichnis-Liste, aber glücklicherweise haben Sie wahrscheinlich deaktiviert diese irgendwo (oder in der Datei Berechtigungen), so sendet es ein 403-Forbidden. Ich denke, dass, wenn Sie es einschalten, es funktioniert in der Regel.
Von dem, was ich verstehe von den docs, ist es nicht sehr gut zu verwenden DirectorySlash off für die Sicherheit.
http://httpd.apache.org/docs/2.1/mod/mod_dir.html
Sie
rewriteBase is /folder/
so muss man das ending slash auf die url zu entsprechen. Sie können/folder
und ich denke, es sollte funktionieren ohne das Ende Schrägstrich.Ich bekomme auch ein 403 wenn ich Folge deinem Vorschlag.
InformationsquelleAutor laurent