Ich habe eine bestimmte Datei (ich kann diese Datei die file-handler
nennen) auf meinem Server, die alle Anfragen an Dateien mit einer bestimmten Erweiterung behandeln sollte. Die file-handler
selbst sollte jedoch nicht direkt zugänglich sein.Wie schreibt man eine bestimmte URL in 404 um, erlaubt aber den Zugriff auf dieselbe URL durch eine andere umgeschriebene URL?
Was ich versuche:
- Legen Sie die
file-handler
in einem passwortgeschützten Verzeichnis. Leider führt jede URL, die in dieses spezielle Verzeichnis geschrieben wird, dazu, dass der Browser (daher der Server) nach dem Passwort fragt, so dass diese Methode nicht funktioniert. - Schreiben Sie den direkten Zugriff auf die
file-handler
auf die 404-Standardseite um. Leider führt jede URL, die infile-handler
umgeschrieben wurde, dazu, dass mod_rewrite die 404-Seite bedient.
Quelle für die zweiten Versuch:
RewriteBase/
RewriteRule dontallowdirectaccess\.xxx$ - [R=404,L]
#Only serve existing files to the file-handler
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule \.ext$ dontallowdirectaccess.xxx [QSA,L]
Danke, das scheint zu funktionieren, obwohl ich den [? \ S /] Teil entfernt habe. Es funktioniert jedoch nicht, wenn ich den [? \ S /] Teil durch das Ende-der-Zeichen-Flag ($) ersetze, es dient mir nur der Seite, warum ist das? –
Weil '$' das Ende der Eingabe bedeutet, während der Beispielwert dieser Variablen 'GET /index.php?id=123 HTTP/1.1' ist, damit es nicht mit der URI selbst endet. – anubhava
Das räumt auf, danke! –