Ich habe ein seltsames Apache mod_rewrite Problem. Ich muss ein Unterverzeichnis vom Benutzer verstecken, aber jede Anfrage in dieses Unterverzeichnis umleiten. Bei stackoverflow habe ich mehrere ziemlich ähnliche Probleme gefunden, aber nichts passt wirklich, also habe ich mich entschieden, eine neue Frage zu stellen.Regel um Ordner zu verstecken, funktioniert nicht richtig ohne Schrägstrich
Meine .htaccess sieht wie folgt aus:
RewriteEngine On RewriteBase/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^(.*)?$ foo/$1 [QSA,L]
Das Dokument-Wurzel enthält nur die folgenden Ordner/Dateien:
/foo/bar/index.html
ich jetzt, dass example.com/bar und Beispiel erwarten. com/bar/würde mir nur den Inhalt von index.html zeigen.
Statt example.com/bar/ zeige mir den Inhalt wie erwartet, aber example.com/bar leitet mich mit einem 301 zu example.com/bar/foo/ und zeigt dann den Inhalt. Ich verstehe wirklich nicht, warum es in diesem Fall eine 301-Weiterleitung gibt.
Wenn ich etwas setzen diese
RewriteCond %{REQUEST_URI} !^[^.]*/$ RewriteCond %{REQUEST_URI} !^[^.]*\.html$ RewriteCond %{REQUEST_URI} !^[^.]*\.php$ RewriteRule ^(.*)$ $1/ [QSA,L]
oben auf dieser Regel zu arbeiten wie es scheint, aber das würde mich erfordern jede verwendete Dateierweiterung zur Liste ...
Gibt es eine andere Art und Weise i kann die Umleitung weglassen, sollte der Ordner "bar" nie von einem externen Benutzer gesehen werden.
Vielen Dank im Voraus!
'^ (. *) /? $' Würde den abschließenden Schrägstrich optional FYI machen – zanderwar