Daniel: Serverkonfigurationsproblem in Bezug auf .htaccess

Hi Forum,

erst mal ein gesundes neues Jahr an euch alle!

Da dies mein erster Beitrag hier ist hoffe ich das halbwegs richtig zu machen.
Ich habe hier ein Projekt für das ich einen einfachen Zugangsschutz benötige welcher Zugriffe von fremden Reffers nicht zulässt, also nur die eigene Domain oder eingetragen Domains dürfen drauf zugreifen. Bei Google habe ich jetzt die Möglichkeit gefunden per .htaccess zu machen. Dies funktioniert allerdings nicht ganz. Die andere Geschichte eines Passwortschutzes mittels .htaccess und .htpasswd funktioniert, also wird die htacces auch erkannt. Setze ich jetzt allerdings dieses hier ein um den Reffer abzufragen erkennt er es zwar, aber er leitet nicht weiter und gibt mir nur eine 403 Fehlerseite aus.

***************************************

AuthUserFile /dev/null
AuthGroupFile /dev/null
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://www.xyz.de/
RewriteCond %{HTTP_REFERER} !^http://xyz.de/
RewriteRule /* http://www.xyz.de/error.html [R,L]

***************************************

Die Funktion Mod_rewrite ist aktiviert und ich habe in der httpd.conf alles versucht so einzustellen wie ich es in Google gefunden habe (natürlich auch Neustart des Servers nicht vergessen).

Die aktueele Konfigurationsdatei könnt ihr hier einsehen.

http://www.callingcash.de/httpd.conf.txt

Ich hoffe ihr könnt mir da irgendwie weiterhelfen, denn ich versuche das jetzt schon 2 Monate lang hinzubekommen und bin langsam am verzweifeln.

Danke im Vorraus,
ciao Daniel

  1. Lese Dich doch mal ein bißchen in die Direktive

    DenyFrom *.aol.com

    ein... das sollte dir doch genügen, wenn ich das recht verstehe, oder?

    (*.aol.com ist natürlich ein beispiel... aber es wäre cool, wenn die Meisten webseitenbetreiber diese Regel in Ihre Webserverkonfiguration einsetzen würden.) :)
     mfG Markus

    1. Hi Markus,

      danke erst mal für deine schnelle Antwort. Ich versteh jetzt nur leider nicht ganz welche Directive. Die im .htaccess File oder in der httpd.conf. Wenn im .htaccess File, könntest du mir vieleicht ein kleines Beispiel geben, weil dann müsste ich ja etwas weglassen bzw. erstzen. Im httpd.conf möchte ich ja nicht die Domains eingeben welche ich zulassen möchte. Ich hoffe du kannst mir da weiterhelfen.

      ciao Daniel

  2. Hey,

    AuthUserFile /dev/null
    AuthGroupFile /dev/null

    Diese zwei Zeilen solltest du wieder löschen, die sind mit Sicherheit
    auch für 403 "Forbidden" verantwortlich. Du kannst aber auch mal im
    server.log nachsehen, woher der Fehler kommt.

    RewriteEngine On
    RewriteCond %{HTTP_REFERER} !^http://www.xyz.de/
    RewriteCond %{HTTP_REFERER} !^http://xyz.de/
    RewriteRule /* http://www.xyz.de/error.html [R,L]

    An dieser Stelle solltest du als erste RewriteCond noch einfügen (als erstes
    nach RewriteEngine):

    RewriteCond %{HTTP_REFERER} .+

    Ansonsten wird dieser "Schutz" nicht richtig funktioniere, weil 1. nicht von
    allen Browsern und 2. nicht ständig und wiederholt der Referer: header
    verschickt wird.

    Übrigens mußt du "xyz.de" in dieser .htaccess durch deinen eigenen
    Domainnamen erstzen, sonst wird es nie etwas.

    MsF,
    milky

    1. Hi Milky,

      danke auch für deine Antwort, habe es grad getestet aber es mag mich noch immer nicht. Die 403 kommt wieder, die ersten beiden Zeilen hab ich raus und RewriteCond %{HTTP_REFERER} .+ mit eingefügt. Habs auch mal ohne getestet. Das xyz hatte ich natürlich schon erstzt, aber es mag nicht. Ich denke es muss irgendwo an der httpd.conf liegen.

      Hast du noch ne Idee?

      ciao Daniel

      1. Hey Daniel,

        Also status code 403 steht für "Forbidden"; und deutet oftmals darauf hin,
        daß die Zugriffsrechte einer Datei nicht stimmen - entweder die angefragte
        Datei bzw. Verzeichnis oder aber die Ziel-URL aus RewriteRule.

        Wirklich helfen kann dir an dieser Stelle NUR ein Blick in die Serverlogs
        (für mod_rewrite gibt es oft ein separates).

        MsF,
        milky

        1. Hey Milky,

          ich hab jetzt noch mal alles getestet, aber nichts führt zum Erfolg. Kannst du mir eventuell sagen in welchem Verzeichniss ich eventuelle Logdateien finde, der Server ist sehr gross und mit ssh bin ich noch nicht soweit dass ich sie finde. Ich habe bereits eine mode_rewrite.so und eine mod_rewrite.c
          Kann aber beide nicht lesen.

          Kann es ein, dass in der httpd.conf noch irgendwas verändert werden muss?

          ciao Daniel

          1. Hey,

            ich hab jetzt noch mal alles getestet, aber nichts führt zum Erfolg. Kannst du mir eventuell sagen in welchem Verzeichniss ich eventuelle Logdateien finde, der Server ist sehr gross und mit ssh bin ich noch nicht soweit dass ich sie finde.

            Also ich benutze schon lange keinen Apache mehr, aber die logfiles liegen
            normal in /var/log/ bzw. /var/log/apache.

            Ich habe bereits eine mode_rewrite.so und eine mod_rewrite.c

            Das ist das eigentliche Modul (.so==.dll) und (.c=Quellcode).

            Kann es ein, dass in der httpd.conf noch irgendwas verändert werden muss?

            Ja, Bonus-Logging für mod_rewrite läßt sich irgendwie aktivieren, aber das
            mußt du im Apache manual nachlesen. Die Ursachen deiner Problem finden sich
            aber sicher auch schon im access.log oder error.log, ansonsten inspiziere
            nochmal /var/log/syslog (Apache schreibt dort mitunter auch etwas rein,
            wenn du in der httpd.conf nichts anderes eingestellt hast).

            MsF,
            milky