Bautz: Welche Infos stehen .htaccess zur Verfügung

Hallo,
kann man in der .htaccess erkennen, ob z.B www.foo.com/test.htm
aus einer Seite derselben domain (z.B. www.foo.com/index.htm) aufgerufen wurde oder aber aus einer "fremden" Domain (z.B. www.bar.com/sonstwas.html)?
Danke für eure Hilfe
Bautz

  1. Hi,

    kann man in der .htaccess erkennen, ob z.B www.foo.com/test.htm
    aus einer Seite derselben domain (z.B. www.foo.com/index.htm) aufgerufen wurde oder aber aus einer "fremden" Domain (z.B. www.bar.com/sonstwas.html)?

    es gibt kein "aus" bzw. "von". Der Request ist absolut unabhängig von jedem anderen, der eventuell mal gewesen sein oder noch kommen mag. Somit kann auch keine entsprechende Information zur Verfügung stehen. Dass einige Clients für sich selbst ein "von" kennen und manchmal die URL in einem HTTP-Header mitsenden, ist außer für statistische Zwecke uninteressant.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. Hallo,
    kann man in der .htaccess erkennen, ob z.B www.foo.com/test.htm
    aus einer Seite derselben domain (z.B. www.foo.com/index.htm) aufgerufen wurde oder aber aus einer "fremden" Domain (z.B. www.bar.com/sonstwas.html)?

    Jein. Wenn ein Referrer übergeben wurde, steht dieser in HTTP_REFERER (das fehlende r wurde in den Status übernommen und ist damit hier korrekt). Diese Angabe und deren Inhalt ist aber optional - du solltest dich nicht auf den Inhalt verlassen.

  3. Hello,

    es gibt eine Reihe von Environment-Parametern, die Du abfragen kannst und auch an ein Script weiterreichen kannst.

    Beim Rewrite-Module sind einige davon beschrieben.

    http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond

    Vermutlich wirst Du auch eine Rewrite-Condition benötigen, um auf Serverebene bereits eine Entscheidung zu treffen.

    Ein harzliches Glückauf

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
  4. @@Bautz:

    kann man in der .htaccess erkennen, ob z.B www.foo.com/test.htm
    aus einer Seite derselben domain (z.B. www.foo.com/index.htm) aufgerufen wurde oder aber aus einer "fremden" Domain (z.B. www.bar.com/sonstwas.html)?

    Nein. (Deinem mangelnden Grundverständnis zu http://de.selfhtml.org/servercgi/server/htaccess.htm@title=.htaccess könntest du entgegenwirken.)

    Eher in den Serverlogs.

    Live long and prosper,
    Gunnar

    PS: <Gebetsmühle/>

    --
    Flughafen in Tempelhof
    findet jeder Hempel doof.
    1. Hallo,

      Nein. (Deinem mangelnden Grundverständnis zu http://de.selfhtml.org/servercgi/server/htaccess.htm@title=.htaccess könntest du entgegenwirken.)

      Diese Quelle kenne ich, aber sie beantwortet nicht meine Frage. Es hätte ja sein können, dass es neben dem Referrer (der ja nicht unbedingt geliefert wird) eine triviale Info gibt der Art "Aufruf aus diesem Server ja/nein".
      Gruss
      Bautz

      1. Hi,

        Es hätte ja sein können, dass es neben dem Referrer (der ja nicht unbedingt geliefert wird) eine triviale Info gibt der Art "Aufruf aus diesem Server ja/nein".

        Nein, das haette nicht sein koennen - weil der Request nicht "aus" oder vom Server kommt, sondern vom Client.
        Mach dir diesen Unterschied erst mal klar - er ist gravierend.

        MfG ChrisB

        --
        "The Internet: Technological marvel of marvels - but if you don't know *what* you're lookin' for on the Internet, it is nothing but a time-sucking vortex from hell."
        1. Hallo

          Nein, das haette nicht sein koennen - weil der Request nicht "aus" oder vom Server kommt, sondern vom Client.
          Mach dir diesen Unterschied erst mal klar - er ist gravierend.

          Das verstehe ich nicht. Mein Perl-Programm, das den Aufruf macht (HTTP:Request...) läuft doch auf dem Server ab oder nicht? Also wäre es doch denkbar, dass diese Information (Aufruf www.foo.com/... von Programm auf gleichem Server www.foo.com/....) irgendwo erhältlich ist? Wenn dies der Fall wäre, könnte man umgekehrt feststellen, ob ein Aufruf nicht von diesem Server kommt. Ich bräuchte auch gar nicht genau zu wissen woher der "auswärtige" Aufruf kommt.
          Grüße
          Bautz

          1. Hi,

            Nein, das haette nicht sein koennen - weil der Request nicht "aus" oder vom Server kommt, sondern vom Client.
            Mach dir diesen Unterschied erst mal klar - er ist gravierend.

            Das verstehe ich nicht. Mein Perl-Programm, das den Aufruf macht (HTTP:Request...) läuft doch auf dem Server ab oder nicht?

            Weisst du, was ich nicht verstehe?
            Warum du mit solch einer Info, dass du gar nicht vom "normalen" Abruf einer Seite durch einen Browser, sondern durch ein Programm auf deinem Server, erst *jetzt* um die Ecke kommst ...

            Also wäre es doch denkbar, dass diese Information (Aufruf www.foo.com/... von Programm auf gleichem Server www.foo.com/....) irgendwo erhältlich ist?

            Schau dir mal die IP an, von der der Abruf der Ressource ausgeht ...

            MfG ChrisB

            --
            "The Internet: Technological marvel of marvels - but if you don't know *what* you're lookin' for on the Internet, it is nothing but a time-sucking vortex from hell."
            1. Hallo,

              Weisst du, was ich nicht verstehe?
              Warum du mit solch einer Info, dass du gar nicht vom "normalen" Abruf einer Seite durch einen Browser, sondern durch ein Programm auf deinem Server, erst *jetzt* um die Ecke kommst ...

              Das habe ich leichtsinnigerweise als selbstverständlich vorausgesetzt, wenn ich wissen möchte, ob der Aufruf vom aktuellen Server kommt.

              Schau dir mal die IP an, von der der Abruf der Ressource ausgeht ...

              Wie soll ich das verstehen? Das wäre doch die REQUEST_URI, die nicht immer geliefert wird, oder sehe ich das falsch?
              Gruß
              Bautz

              1. Hi,

                Warum du mit solch einer Info, dass du gar nicht vom "normalen" Abruf einer Seite durch einen Browser, sondern durch ein Programm auf deinem Server, erst *jetzt* um die Ecke kommst ...

                Das habe ich leichtsinnigerweise als selbstverständlich vorausgesetzt, wenn ich wissen möchte, ob der Aufruf vom aktuellen Server kommt.

                Und wir haben "vorausgesetzt", dass du den Unterschied nicht kennst, bzw. dir nicht bewusst bist, wer was abruft :-)

                So viel Muehe, diesbezueglich Klarheit zu schaffen, solltest du dir also bei der naechsten Problembeschreibung bitte schon geben.

                Schau dir mal die IP an, von der der Abruf der Ressource ausgeht ...

                Wie soll ich das verstehen? Das wäre doch die REQUEST_URI, die nicht immer geliefert wird, oder sehe ich das falsch?

                Nein [1], REQUEST_URI ist das, was angefordert wird. Und wenn der "nicht geliefert" werden wuerde - dann gaeb's gar keinen Request.

                [1] So falsch war es also nicht, davon auszugehen, dass es noch ein wenig an Ahnung fehlt, was die Zusammenhaenge angeht.

                MfG ChrisB

                --
                "The Internet: Technological marvel of marvels - but if you don't know *what* you're lookin' for on the Internet, it is nothing but a time-sucking vortex from hell."
          2. Hallo Bautz

            kann man in der .htaccess erkennen, ob z.B www.foo.com/test.htm aus einer Seite derselben domain (z.B. www.foo.com/index.htm) aufgerufen wurde …

            … Mein Perl-Programm, das den Aufruf macht (HTTP:Request...) läuft doch auf dem Server ab oder nicht? …

            Nochmal zum mitschreiben:

            Erfolgt der Aufruf, um den es geht, von einer _Seite_?
            Oder erfolgt der Aufruf direkt durch dein Perl-Script?

            … Also wäre es doch denkbar, dass diese Information (Aufruf www.foo.com/... von Programm auf gleichem Server www.foo.com/....) irgendwo erhältlich ist?

            Wenn dein Script selbst die Resource anfordert, dann weißt du (bzw. dein Script) doch bereits, woher diese angefordert wurde.

            Auf Wiederlesen
            Detlef

            --
            - Wissen ist gut
            - Können ist besser
            - aber das Beste und Interessanteste ist der Weg dahin!
            1. Hallo,

              Erfolgt der Aufruf, um den es geht, von einer _Seite_?
              Oder erfolgt der Aufruf direkt durch dein Perl-Script?

              Aus verschiedenen URLs wird das Perl-Script aufgerufen mit u.a der rufenden URL als Parameter. (über htaccess-Redirect)

              Das Perl-Script liest umgekehrt HTML-Code-Stücke aus der rufenden URL.
              Diese Aufrufe werden ja nun wiederum von dem .htaccess der rufenden URL bearbeitet.
              Damit es nicht zu loops oder sehr langen Abfrageketten kommt, wäre es hilfreich zu wissen, ob z.B. www.foo.com/inhalt aus dem Perl-Programm aufgerufen wurde oder direkt als URL-Aufruf (im letzteren Falle sollte eine Fehlermeldung kommen).
              Ich hoffe, dass ich es klar rüberbringen konnte.
              Gruß
              Bautz

              1. Hi,

                Das Perl-Script liest umgekehrt HTML-Code-Stücke aus der rufenden URL.
                Diese Aufrufe werden ja nun wiederum von dem .htaccess der rufenden URL bearbeitet.
                Damit es nicht zu loops oder sehr langen Abfrageketten kommt, wäre es hilfreich zu wissen, ob z.B. www.foo.com/inhalt aus dem Perl-Programm aufgerufen wurde oder direkt als URL-Aufruf (im letzteren Falle sollte eine Fehlermeldung kommen).

                Warum stellst du die Inhalte denn dann ueberhaupt von "ausserhalb" per HTTP abrufbar bereit, wenn das gar nicht moeglich sein soll?

                Irgendwie scheint dein "Konzept" reichlich vermurkst zu sein - du solltest dir mal was vernuenftiges ueberlegen.

                • Wer braucht Zugriff, wer nicht?
                • Muss der Zugriff ueber HTTP erfolgen, oder reichen andere Wege (Dateisystem) ggf. aus?
                • ...

                MfG ChrisB

                --
                "The Internet: Technological marvel of marvels - but if you don't know *what* you're lookin' for on the Internet, it is nothing but a time-sucking vortex from hell."
                1. Hallo

                  Warum stellst du die Inhalte denn dann ueberhaupt von "ausserhalb" per HTTP abrufbar bereit, wenn das gar nicht moeglich sein soll?

                  Habe ich das so geschrieben? Ganz sicher nicht!

                  Die HTML-Fragmente werden jeweils von dem auf dem gleichen Server liegenden HTML_'Programm' per SSI aufgerufen.
                  www.foo1.com/index.shtml ruft auf www.foo1.com/dir.inc, www.foo1.com/uv/inh.inc, ....

                  www.foo2.com/index.shtml ruft SSI www.foo2.com/dir.inc, www.foo2.com/uv/inh.inc, ....

                  Auf diesen Servern habe ich keine Berechtigung, CGIs zu verwenden.

                  Es gibt also einen weiteren Server, auf dem meine cgi-Programme laufen.
                  Da die CGI-Programme Seiten erzeugen sollen, die in Teilen mit den oben erwähnten übereinstimmen, lesen diese CGI-Programme (z.B. www.bar.com/cgi/formular.cgi) einige der obigen Dateien *.inc.

                  Irgendwie scheint dein "Konzept" reichlich vermurkst zu sein - du solltest dir mal was vernuenftiges ueberlegen.

                  Ich weiss nicht, was da vermurkst sein soll.

                  Nein [1], REQUEST_URI ist das, was angefordert wird. Und wenn der "nicht geliefert" werden wuerde - dann gaeb's gar keinen Request.

                  Da meinte ich natürlich den Refer(r)er.

                  [1] So falsch war es also nicht, davon auszugehen, dass es noch ein wenig an Ahnung fehlt, was die Zusammenhaenge angeht.

                  Warum gleich so persönliche Statements? Es hätte genügt, zu schreiben "du meintest HTTP_REFERER".
                  Wenn ich alles wüsste, bräuchte ich hier nicht zu fragen. Und Verschreiber
                  sehe ich hier im Forum des öfteren. Es muss ja hoffentlich hier keine Diplomarbeit abgeliefert werden.

                  Schau dir mal die IP an, von der der Abruf der Ressource ausgeht ...

                  Und was meintest Du damit? Den Refer(r)er, den es nicht immer gibt?

                  Gruß
                  Bautz

  5. kann man in der .htaccess erkennen, ob z.B www.foo.com/test.htm
    aus einer Seite derselben domain (z.B. www.foo.com/index.htm) aufgerufen wurde oder aber aus einer "fremden" Domain (z.B. www.bar.com/sonstwas.html)?

    Die .htaccess ist eine reine Einstellungsdatei. Was du damit machen kannst, hängt vom Funktionsumfang der Webserver-Module ab, deren Einstellungen du dort festlegst.

    So ist es denn auch mit dem Modul mod_rewrite, namentlich RewriteCond, durchaus möglich, eine ganze Reihe Eigenschaften zu prüfen, dazu gehört auch die Referer:-Angabe, mit der der Browser zur aufgerufenen URL die aufrufende URL schickt (so vorhanden und so nicht unterdrückt).