Stefan Richter: Apache: mod_rewrite .htaccess - nur Domain anzeigen

Hallo,

mit dem Rewrite-Mod unter Apache ist es ja möglich URL´s zu manipulieren. Also bspw. kann man eine .php Datei in der URL automatisch wie eine .htm Datei aussehen lassen.

Ist aber z.B. folgendes möglich, dass wenn ich irgendeinen Link meiner Seite aufrufe, immer nur die Domain angezeigt wird?

Also bspw.:

http://www.domain.de/unterverzeichniss/test1.htm
http://www.domain.de/unterverzeichniss/test2.htm

wird beides zu:

http://www.domain.de

Ist soetwas möglich?

Grüße

  1. hi,

    Ist aber z.B. folgendes möglich, dass wenn ich irgendeinen Link meiner Seite aufrufe, immer nur die Domain angezeigt wird?

    Also bspw.:

    http://www.domain.de/unterverzeichniss/test1.htm
    http://www.domain.de/unterverzeichniss/test2.htm

    wird beides zu:

    http://www.domain.de

    Ist soetwas möglich?

    Natürlich ist es möglich, die beiden hereinkommenden Requests nach /unterverzeichniss/test1.htm und /unterverzeichniss/test2.htm auf / umzuleiten, als externen Redirect.
    Dann fordert der Client / an, zeigt also auch nur http://www.domain.de/ in der Adresszeile an.
    Dann hast du natürlich serverseitig gar keine Möglichkeit mehr herauszufinden, welche Ressource der Client ursprünglich haben wollte. Aber vermutlich nimmst du das ja bereitwillig in Kauf, wenn du schon so etwas unsinniges vorhast.

    (Dass es clientseitig mit einem der Seite übergestülpten Frameset theoretisch ginge, und warum es praktisch ebenfalls hochgradig schwachsinnig wäre, hast du doch sicher schon in einer der im Archiv zu findenden, schon mehrfach geführten Diskussionen zu diesem Thema nachgelesen.)

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. naja, ob das nun manche als unsinnig ansehen, ist jedem seine sache... für meine zwecke wäre es schon nützlich... da niemand unbedingt die dateinamen, verzeichnisse etc. offensichtlich angezeigt bekommen soll.

      ich meine aber nicht direkt einen redirect.. also eine umleitung, sonder ich meine, wie man es umsetzen kann, dass die url halt umgeschrieben wird, so dass nur die domain allein angezeigt wird!? die dateien sollen aber weiterhin normal aufgerufen werden können... z.b. bei dem aufruf der seite http://www.domain.de/verzeichniss/datei1.htm... soll dann in der titelleiste http://www.domain.de/ stehen.

      und bräuchte noch, wie man das halt in der .htaccess datei angeben muss, um diesen effekt zu erzielen.

      grüße

      1. hi,

        naja, ob das nun manche als unsinnig ansehen, ist jedem seine sache...

        Du willst die Nutzbarkeit der Seite für jeden Nutzer einschränken.
        Sofern du also nicht der absolut einzige Nutzer bist, kann es kaum "nur deine Sache" sein.

        für meine zwecke wäre es schon nützlich... da niemand unbedingt die dateinamen, verzeichnisse etc. offensichtlich angezeigt bekommen soll.

        Ach Herrje, schon wieder ein Vertreter der "security by obscurity"-Fraktion.

        Dann rede doch mal Klartext - was wäre "schlimm" daran, wenn ich Verzeichnis- und Dateinamen kennen würde?

        Wenn du die Befürchtung hast, mit dieser Kenntnis wäre Schädliches anzustellen - dann willst du vermutlich eine komplett andere Frage stellen, als die, mit der du den Thread eröffnet hast - nämlich "wie bekomme ich meine Scripte etc. halbwegs sicher?"

        ich meine aber nicht direkt einen redirect.. also eine umleitung, sonder ich meine, wie man es umsetzen kann, dass die url halt umgeschrieben wird, so dass nur die domain allein angezeigt wird!? die dateien sollen aber weiterhin normal aufgerufen werden können... z.b. bei dem aufruf der seite http://www.domain.de/verzeichniss/datei1.htm... soll dann in der titelleiste http://www.domain.de/ stehen.

        Dann schreibe in den Head von /verzeichniss/datei1.htm:
        <title>http://www.domain.de/</title>

        Solltest du die Adresszeile meinen, in der mein Browser mir anzeigt, welche Ressource ich angefordert habe - dazu sagte ich bereits, dieser Unfug wäre nur clientseitig über ein Frameset realisierbar.

        und bräuchte noch, wie man das halt in der .htaccess datei angeben muss, um diesen effekt zu erzielen.

        Einen handelsüblichen Browser kannst du, nachdem ein URL derart angefordert wurde, dass er bereits in der Adresszeile angezeigt wird, m.E. _nur_ durch einen Redirect (oder andere Form der Um-/Weiterleitung) dazu bringen, wieder etwas anderes anzuzeigen.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Du willst die Nutzbarkeit der Seite für jeden Nutzer einschränken.
          Sofern du also nicht der absolut einzige Nutzer bist, kann es kaum "nur deine Sache" sein.

          Nein, ich will die Nutzbarkeit der Seite nicht einschränken!!!

          Ach Herrje, schon wieder ein Vertreter der "security by obscurity"-Fraktion.

          Nein.

          Dann rede doch mal Klartext - was wäre "schlimm" daran, wenn ich Verzeichnis- und Dateinamen kennen würde?

          Es ist nichts schlimmes dabei...

          Wenn du die Befürchtung hast, mit dieser Kenntnis wäre Schädliches anzustellen - dann willst du vermutlich eine komplett andere Frage stellen, als die, mit der du den Thread eröffnet hast - nämlich "wie bekomme ich meine Scripte etc. halbwegs sicher?"

          Nein, ich habe die Frage so gestellt wie ich sie meinte.

          Solltest du die Adresszeile meinen, in der mein Browser mir anzeigt, welche Ressource ich angefordert habe - dazu sagte ich bereits, dieser Unfug wäre nur clientseitig über ein Frameset realisierbar.

          Unfug?

          Einen handelsüblichen Browser kannst du, nachdem ein URL derart angefordert wurde, dass er bereits in der Adresszeile angezeigt wird, m.E. _nur_ durch einen Redirect (oder andere Form der Um-/Weiterleitung) dazu bringen, wieder etwas anderes anzuzeigen.

          Okay, das ist doch mal eine Antwort.

          Meine Frage war glaub ich eindeutig gestellt, ob man mit dem Apache Modul mod_rewrite, die komplette Verzeichnisstruktur ausblenden kann.. ja oder nein und wenn ja, dann wie! Und nicht, könnt ihr mir bitte eure persönliche Meinung dazu sagen.

          Es ist zwar gut und schön, dass man sich über für und wider unterhält... aber es muss nicht zu jedem was man fragt eine persönliche Meinung abgegeben werden (siehe Unfug, oder sowas macht man nicht etc.)... Es würde die Übersichtlichkeit in diesem Forum um einiges steigern, wenn auf die gestellten Fragen direkt geantwortet werden würde und nicht erst mehrere Zeilen darüber geschrieben werden, ob das gefragte Vorhaben sinnvoll ist oder nicht... Wenn jemand eine Frage stellt, dann wird er sich schon etwas dabei denken und möchte daher nur eine Antwort, ob dies möglich ist.
          Von daher braucht man sich aber auch nicht wundern, wenn Fragen mehrfach gestellt werden, da man sich aus den meisten bereits bestehenden Themen nichts herausnehmen kann, außer persönliche Meinungen.

          Ist jetzt nur mal meine Meinung dazu und nicht böse gemeint.

          Grüße

          1. Es würde die Übersichtlichkeit in diesem Forum um einiges steigern, wenn auf die gestellten Fragen direkt geantwortet werden würde und nicht erst mehrere Zeilen darüber geschrieben werden, ob das gefragte Vorhaben sinnvoll ist oder nicht...

            Das ist hier keine Antwortmaschine und du bezahlst niemanden für seine Antworten, daher bist du auch nicht in der Position, bestimmen zu können, wie umfassend jemand antwortet. Du kannst dich über den Ton einer Meinungsäußerung beschweren (nicht selten zu recht), aber wenn dir anderer Leute Meinungen nicht gefallen, dann stelle keine Fragen.
            Wem Attacken auf sein Vorhaben zudem unangenehm sind, der hat offenbar selbst Zweifel an ihm.

            Wenn jemand eine Frage stellt, dann wird er sich schon etwas dabei denken und möchte daher nur eine Antwort, ob dies möglich ist.

            Jemand, der die Antwort auf seine Frage nicht kennt, sollte tunlichst nicht versuchen, anderen Leuten, die in dieser Sache mehr Wissen angehäuft haben, Vorschriften über das Thema zu machen. Deine Annahme impliziert geradezu, dass der Fragende trotz seiner Wissenslücke die Weisheit für sich gepachtet hat, ein Widerspruch in sich.

            Davon abgesehen scheint es in der Praxis gerade nicht so zu sein, dass Fragende sich sonderlich viele Gedanken über ihre Problemstellung machen. Wenn es bei dir anders ist, schön, aber dann stehe zu deiner Position und versuche nicht, hier generell eine umfassende Antworterei abwürgen zu wollen.

          2. Hallo,

            Du willst die Nutzbarkeit der Seite für jeden Nutzer einschränken.
            Nein, ich will die Nutzbarkeit der Seite nicht einschränken!!!

            aber das tust du, wenn du die URLs verschleierst.

            Es würde die Übersichtlichkeit in diesem Forum um einiges steigern, wenn auf die gestellten Fragen direkt geantwortet werden würde und nicht erst mehrere Zeilen darüber geschrieben werden, ob das gefragte Vorhaben sinnvoll ist oder nicht...

            Genau das macht aber einen Teil der Qualität dieses Forums aus.

            Wenn jemand eine Frage stellt, dann wird er sich schon etwas dabei denken und möchte daher nur eine Antwort, ob dies möglich ist.

            Wenn jemand fragt, was denn auf dem Tisch wohl am dekorativsten den Fleck in der Tischdecke verbirgt, dann ist die logische, fast zwangsläufige Rückfrage, warum derjenige nicht die Tischdecke in die Reinigung gibt.
            Klar kann man auch empfehlen, eine Serviette darüber zu drapieren, oder eine Blumenvase. Aber damit pfuscht man an Symptomen herum, nicht am eigentlichen Problem.

            Von daher braucht man sich aber auch nicht wundern, wenn Fragen mehrfach gestellt werden, da man sich aus den meisten bereits bestehenden Themen nichts herausnehmen kann, außer persönliche Meinungen.

            Nein, viele Fragesteller wollen einfach nicht erkennen, dass sie in Wirklichkeit etwas ganz anderes suchen als das, was sie selbst formuliert haben, weil sie häufig den Gesamt-Kontext und seine Tragweite nicht erkennen.

            Ist jetzt nur mal meine Meinung dazu und nicht böse gemeint.

            Dito.

            Schönen Abend noch,
             Martin

            --
            Um die Wahrheit zu erfahren, muss man den Menschen widersprechen.
              (George Bernhard Shaw)
      2. Hi,

        http://de.wikipedia.org/wiki/Security_through_obscurity
        http://www.useit.com/alertbox/990321.html (URLs should be hackable, Usability Guru Jakob Nielsen)

        Im Weiteren siehe wahsaga.

        Du weißt schon, was mod_rewrite macht, oder? Und warum es dann keinen Sinn macht, alle Requests auf / umzuleiten, wenn du sie doch trennen willst?

        Der Yeti

        --
        Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
        Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
        Und bin so klug als wie zuvor!
        sh:( fo:| ch:? rl:? br:< n4:& ie:( mo:| va:| de:[ zu:) fl:| ss:) ls:< js:|
        1. Du weißt schon, was mod_rewrite macht, oder? Und warum es dann keinen Sinn macht, alle Requests auf / umzuleiten, wenn du sie doch trennen willst?

          Hallo,

          ich möchte nicht alle Requests auf / umleiten! Ich möchte einfach nur wissen, ob es möglich ist, dass man mit dem Apache Modul mod_rewrite nicht nur Dateiendungen oder Dateinamen verändern kann, sondern ob es vielleicht auch möglich ist darüber einen Dateinamen bzw. die Verzeichnisstruktur beim Aufruf einer Seite auszublenden...

          Grüße

          1. Hallo,

            ich möchte nicht alle Requests auf / umleiten! Ich möchte einfach nur wissen, ob es möglich ist, dass man mit dem Apache Modul mod_rewrite nicht nur Dateiendungen oder Dateinamen verändern kann, sondern ob es vielleicht auch möglich ist darüber einen Dateinamen bzw. die Verzeichnisstruktur beim Aufruf einer Seite auszublenden...

            nein, das ist nicht möglich!
            Das Apache-Modul mod_rewrite kann zwar URLs umformen, doch es tut das nur serverintern. Der Client kriegt davon nichts mit. Er merkt nicht, dass die URL, die er ursprünglich angefordert hat, serverintern auf eine ganz andere Ressource umgeleitet wird (Ausnahme: Externe Redirects auf die neue URL). Ergo ändert sich auch der Inhalt der Adresszeile nicht, denn der zeigt ja genau die Request-URL.

            So long,
             Martin

            --
            Man gewöhnt sich an allem, sogar am Dativ.
  2. echo $begrüßung;

    mit dem Rewrite-Mod unter Apache ist es ja möglich URL´s zu manipulieren.

    Da, scheint mir, hast du einen Denkfehler bzw. eine Wissenslücke. Mit mod_rewrite schreibt man keine URLs um. Man konfiguriert damit Regeln, welche Ressource bei welcher angeforderten URL ausgeliefert werden soll. Was beim Client passiert, was der anzeigt, und was der anfordert, ist nicht mod_rewrites Problem. Wie deine Link-URLs aussehen, bestimmst du in deinem HTML-Code. Und natürlich muss der Client unterschiedliche URLs aufrufen, um an unterschiedliche Inhalte zu gelangen.[*]

    Also bspw. kann man eine .php Datei in der URL automatisch wie eine .htm Datei aussehen lassen.

    Nein, andersrum wird ein Schuh draus. Man kann die Namen seiner URLs auf .htm(l) enden lassen und mit mod_rewrite serverseitig festlegen, was dazu ausgeliefert wird.
    Dateinamen und URLs haben nichts unbedingt ein 1:1-Verhältnis zueinander. Es ist oft nur so, dass ein Teil der aufgerufenen URL direkt zum Finden einer Datei im Dateisystem des Servers herangezogen wird, weil dies quasi jeder Webserver ohne großen Konfigurationsaufwand beherrscht.

    Vielleicht suchst du ja Pathinfo. Nach der Angabe eines "Dateinamens" lässt man weitere "Verzeichnisse" folgen

    http://example.com/foo/bar.php/baz/qux

    Der Webserver findet bar.php im Verzeichnis foo und ruft es auf. /baz/qux wird als PATH_INFO übergeben. Das Script kann daraufhin entscheiden, welchen Inhalt es ausliefert.
    Mittels mod_rewrite konfiguriert man den Apachen zum Beispiel so, dass er alle Zugriffe ins "Verzeichnis" foo an ein bestimmtes Script abgibt, nennen wir es wieder bar.php. Man ruft also auf:

    http://example.com/foo/baz/qux

    und der Apache ruft bar.php mit /baz/qux als PATH_INFO auf. Und auch das foo muss kein echtes Verzeichnis sein (deshalb die Anführungszeichen in meiner obigen Ausührung) sondern kann mittels Serverkonfiguration (RewriteRules oder Alias) an eine bliebige Stelle im Dateisystem verweisen.

    Du verwendest also in deinen Dokumenten nur noch Links à la /foo/baz/qux und die Serverkonfiguration und die beteiligten Scripte liefern dann den gewünschten Inhalt aus.

    [*] Das ist nicht ganz richtig. Man kann auch mittels Zufall, mittels Cookies oder einer anderen Art der serverseitigen Steuerung zur gleichen URL jeweils andere Inhalte ausliefern. Doch das stelle ich mir nur bei einer sturen Geradeaus-Sequenz als sinnvoll vor. Der Server gibt in dem Fall also den Pfad vor.

    echo "$verabschiedung $name";

    1. Okay, vielen Dank für die Hilfe... dann ist sowas also nicht möglich mit mod_rewrite.

      Aber ich werde mich mal mit deiner Variante des Pathinfo beschäftigen. Ist zwar nicht ganz das was ich gesucht habe... aber vielleicht hilft es ja weiter. Danke!

      Grüße