mod_rewrite
-
Hat jemand von euch Erfahrung mit mod_rewrite in Kombination mit .htaccess-Files? Wenn ich schon nur ein "RewriteEngine On" oder "RewriteEngine Off" in das .htaccess einfüge erhalte ich folgendes:
Forbidden You don't have permission to access /temp/index.php on this server.
Ziel ist es, alle aufgerufenen URLs an ein Script weiterzuleiten, welches dann die Daten schickt - also z.B. wird /temp/bild1.gif angefordert, so soll /temp/index.php?file=bild1.gif aufgerufen werden. Das ganze soll ein Passwortschutz werden, ohne das alle URLs manuell umgeschrieben werden müssen, der aber auch ohne .htaccess-Passwortschutz auskommen soll, da die User dynamisch angelegt werden sollen und dann in einer DB abgelegt sind - oder liese sich das auch irgendwie eleganter lösen?
-
Versuch mal ob es funzt, wenn du RewriteBase mit angibst.
RewriteEngine on RewriteBase /var/www/etc/
Edit:
Wenn du alle Dateien an ein Script weiterleiten willst, könnte das
in etwa wie folgt aussehen:RewriteEngine on RewriteBase /temp/ RewriteCond %{REQUEST_URI} (.*)$ RewriteRule (.*)$ http://www.domain.de/index.php?get=$1
-
Hat leider auch nicht funktioniert
Komisch finde ich vor allem, das der Fehler ja auch kommt, wenn ich RewriteEngine auf Off setze
-
o_O
CHMOD?@Zoopuls:
Hmm.. wenn ich das mit dem modrewrite in meine .htaccess schreibe und die domain auf meine ändere, dann lädt sich der browser tot (5 minuten ladezeit ohne fehlermeldung oder sonst was...wenn ich es auf domain.de lasse gehts einwandfrei..
Weisst du woran das liegen kann?und was genau muss ich bei RewriteBase angeben? Das Base verzeichnis innerhalb des virtuellen Servers oder das absolute verzeichnis auf dem Server selbst.. ?
-
Sorry Fehler von mir. Der unendliche Reload ist eigentlich logisch.
// ReCo. holt z.B. die URL http://www.deinedomain.de/index.php RewriteCond %{REQUEST_URI} (.*)$ // ReRu ändert die URL jetzt in http://www.deinedomain.de/index.php?get=index.php RewriteRule (.*)$ http://www.domain.de/index.php?get=$1
Dies hat dann die unendliche Schleife zur Folge.
Wenn du domain.de drin stehen lässt, gibt es keine Schleife, weil
deine URL nach domain.de umgeleitet wird.Um es richtig zu machen, braucht es einen eindeutigen Identifikator.
Beispiel durch ein virtuelles Verzeichnis:// aus http://www.deinedomain.de/content/bild.gif RewriteCond %{REQUEST_URI} ^/content/(.*) // wird http://www.deinedomain.de/index.html?get=bild.gif RewriteRule ^content/(.*) http://www.deinedomain.de/index.html?get=$1
oder durch eine Zeichenfolge:
// aus http://www.deinedomain.de/content-bild.gif RewriteCond %{REQUEST_URI} ^/content-(.*) // wird http://www.deinedomain.de/index.html?get=bild.gif RewriteRule ^content-(.*) http://www.deinedomain.de/index.html?get=$1
Dann kann man auch jeden Dateityp einzeln ändern
// aus http://www.deinedomain.de/bild.gif // oder http://www.deinedomain.de/bild.jpg // oder http://www.deinedomain.de/bild.png RewriteCond %{REQUEST_URI} ^/(.*)\.(gif|jpg|png)$ // wird http://www.deinedomain.de/index.html?bild=bild.gif // oder http://www.deinedomain.de/index.html?bild=bild.jpg // oder http://www.deinedomain.de/index.html?bild=bild.png RewriteRule ^(.*)\.(gif|jpg|png)$ http://www.deinedomain.de/index.html?bild=$1.$2
Bei RewriteBase musst du das absolute Verzeichnis des Servers angeben.
@flenders, deine Fehlermeldung besagt normal, das sich im Verzeichnis
/temp/ keine Start-Datei (index.htm, index.html) befindet. Vielleicht
entsteht der Fehler, wenn du in deiner httpd.conf keine index.php
als Start-Datei angegeben hast und er somit die .htm oder .html sucht.
-
Ah ja verstehe
Vielen Dank für die info Damit hast du mir schon sehr geholfen
-
2oopuls schrieb:
@flenders, deine Fehlermeldung besagt normal, das sich im Verzeichnis
/temp/ keine Start-Datei (index.htm, index.html) befindet. Vielleicht
entsteht der Fehler, wenn du in deiner httpd.conf keine index.php
als Start-Datei angegeben hast und er somit die .htm oder .html sucht.Dann dürfte er aber doch eigentlich ohne .htaccess die index.php auch nicht finden, oder müsste ich dann noch mehr in .htaccess reinnehmen. Wobei ja auch eigentlich direkt index.php aufgerufen werden sollte, was die Einstellung bzgl. der Start-Datei eigentlich dann nicht mehr betrifft
-
Hmm, anscheinend hast du wirklich keine Rechte die RewriteEngine einzusetzen.
Frage eines Users an seinen Hoster:
ich hab
RewriteEngine Onin meiner .htaccess stehn
bei jeder Datei, die ich dann aufrufen will bekomme ichForbidden
You don't have permission to access /test/script.php on this server.Support Antwort:
"wir haben aus Sicherheitsgründen bestimmte Systembefehle für die Ausführung durch Sripte deaktiviert. Bitte haben sie dafür Verständniss, da anders die geringen Ausfallzeiten nicht garantieren können. Ohne diese Richtlinien könnte ein ganz netter User zum Beispiel Systemdienste beenden oder gar den Server down fahren (um mal vom schlimmsten auszugehen)."Die Ausreden der Hoster werden anscheinend immer besser. Für die Antwort
hab ich auch Verständnis, ich beende auf meinem Server auch immer Systemdienste
durch die RewriteEngine. *lol*
-
Tja, dann werde ich mal versuchen, den Provider zu bitten, das entsprechend zu ändern.
Warum es überhaupt deaktiviert ist: Ich nehme an, dass sie eben Endlos-Schleifen verhindern wollen