sebu84: URL-Verkürzen mit mod_rewrite

Hallo,

ich bin ganz neu hier im Forum und habe eine Frage bzgl. mod_rewrite.

Wir haben eine Umgebung mit einem Apache Web-Server (2.2) und Tomcat. Unter dem Tomcat läuft ein apllikationsserver welcher dynamische Inhalte als HTML ausliefert. Die Bilder und CSS-Dateien liegen auf der Platte und werden durch den Apache ausgeliefert. Die Verbidnung zwischen beiden ist per mod_jk realisiert.

Leider sind die URLs durch den Applikationsserver sehr lang.
Beispiel: www.test.de/scp/rre/tran/web/index.htm

Ich würde diese natürlich gerne verkürzen. Per ModRewrite ist es nun ja möglich, das eine Seiten-Anfrage wie www.test.de/index.htm auf oben genannte Adresse umgelietet wird. Danach steht jedoch erneut wieder die lange URL im Browser.

Gibt es eine Möglichkeit das nur intern die Pfade /scp/rr/tran/web/ verwendet werden und diese gar nicht nach außen hin erscheinen?

Ich kenne leider kein anderes Modul, welches evtl so etwas unterstützt. Normal sehe ich ein Ändern der URL eher kritisch, da dies ja auch problematisch wg. Phising etc. ist. Allerdings würde ich schon gern die Ordner-Struktur ausblenden.

Mit dem Passtrough-Flag [PT] komme ich schon in die richtige Richtung. Leider werden dort die statischen Inhalte des Apaches nicht mitgeleifert, sondern anscheinend nur direkt der Tomcat auf Port 8080 angefragt. So erhalte ich eine Seite ohne Bilder und Styles.

Hat vielleicht jemand eine Lösung oder einen Ansatzpunkt der bei diesem Problem weiterhelfen könnte?

Ich habe schon viel gesucht und auch viele ähnliche Anfragen gefunden, aber leider nichts passendes. Ich hatte die Hoffnung das gerade in der Kombination mit dem Tomcat evtl. dort noch eine Möglichkeit besteht. Evtl. habe ich auch nach den falschen Stichwörtern gesucht. Bieten hier vielleicht mod_proxy o.ä. etwas passendes?

Schon mal vielen Dank.

  1. Hi,

    Leider sind die URLs durch den Applikationsserver sehr lang.
    Beispiel: www.test.de/scp/rre/tran/web/index.htm

    schlechtes Beispiel: Die Stiftung Warentest hat es bestimmt nicht gern, wenn ihre Domain tausendfach missbraucht wird (dafür gibt es extra Beispieldomains, siehe RFC 2606).

    Ich würde diese natürlich gerne verkürzen. Per ModRewrite ist es nun ja möglich, das eine Seiten-Anfrage wie www.test.de/index.htm auf oben genannte Adresse umgelietet wird. Danach steht jedoch erneut wieder die lange URL im Browser.

    Dann hast du etwas falsch gemacht. Vermutlich hast du eine Weiterleitung (Redirect) gebaut, indem du als Ziel für das Rewriting wieder eine HTTP-Ressource angegeben hast.

    Gibt es eine Möglichkeit das nur intern die Pfade /scp/rr/tran/web/ verwendet werden und diese gar nicht nach außen hin erscheinen?

    Ja, das ist eigentlich der Normalfall.

    Ich kenne leider kein anderes Modul, welches evtl so etwas unterstützt. Normal sehe ich ein Ändern der URL eher kritisch, da dies ja auch problematisch wg. Phising etc. ist.

    Eigentlich nicht. Solange die Domain eindeutig ist, darf ein Anbieter intern umschreiben, wie er es für sinnvoll hält.

    So long,
     Martin

    --
    Niemand ist überflüssig: Er kann immer noch als schlechtes Beispiel dienen.
    1. Hi,

      schlechtes Beispiel: Die Stiftung Warentest hat es bestimmt nicht gern, wenn ihre Domain tausendfach missbraucht wird (dafür gibt es extra Beispieldomains, siehe RFC 2606).

      Mein Fehler. Da hab ich gar nicht dran gedacht. Wieder was gelernt.

      Dann hast du etwas falsch gemacht. Vermutlich hast du eine Weiterleitung (Redirect) gebaut, indem du als Ziel für das Rewriting wieder eine HTTP-Ressource angegeben hast.

      Um mit welcher Anweisung müsste ich arbeiten bzw. wie würde diese grob aussehen? Ich habe es versucht mit:

      RewriteRule ^/(.*) /scp/rre/tran/web/$1 [PT,L]

      Ja, das ist eigentlich der Normalfall.

      Eigentlich nicht. Solange die Domain eindeutig ist, darf ein Anbieter intern umschreiben, wie er es für sinnvoll hält.

      Ok. Ich dachte das wäre irgendwie problematisch.

      So long,
      Martin

      Danke für die Antwort.

      1. Hallo,

        Vermutlich hast du eine Weiterleitung (Redirect) gebaut, indem du als Ziel für das Rewriting wieder eine HTTP-Ressource angegeben hast.
        Um mit welcher Anweisung müsste ich arbeiten bzw. wie würde diese grob aussehen? Ich habe es versucht mit:

        RewriteRule ^/(.*) /scp/rre/tran/web/$1 [PT,L]

        sieht schon mal nicht schlecht aus (außer dass ich nicht verstehe, warum du Apache-Direktiven als Javascript-Code auszeichnest). Ich kann allerdings nicht ganz überblicken, was das PT-Flag hier zu sagen hat. Brauchst du das?
        Nach der Dokumentation zu urteilen sollte man es eher meiden ("This flag is just a hack to enable post-processing of the output of RewriteRule directives"). Anscheinend hat es nur in Verbindung mit mod_alias möglicherweise einen Sinn.

        Ciao,
         Martin

        --
        Nein, es ist nicht wahr, dass bei der Post Beamte schneller befördert werden als Pakete.
        1. sieht schon mal nicht schlecht aus (außer dass ich nicht verstehe, warum du Apache-Direktiven als Javascript-Code auszeichnest). Ich kann allerdings nicht ganz überblicken, was das PT-Flag hier zu sagen hat. Brauchst du das?
          Nach der Dokumentation zu urteilen sollte man es eher meiden ("This flag is just a hack to enable post-processing of the output of RewriteRule directives"). Anscheinend hat es nur in Verbindung mit mod_alias möglicherweise einen Sinn.

          Ciao,
          Martin

          Leider funktioniert dann das durchschleifen per mod_jk nicht bzw. wird umgangen.

          Wie müsste denn eine korrekte Deklarierung aussehen, so dass im Browser nicht die Redirect-Adresse angezeigt wird?