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 On

    in meiner .htaccess stehn
    bei jeder Datei, die ich dann aufrufen will bekomme ich

    Forbidden
    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 😕


Anmelden zum Antworten