Am Mittwoch, 8. Juni 2011 schrieb Lentes, Bernd:
Manfred Tremmel schrieb:
Verständnisfrage: Mit JKMount leite ich requests an den httpd an Tomcat weiter. So weit klar. Wie kommt da mod_rewrite ins Spiel ? Werden mit rewrite requests im httpd umgelenkt, die dann anschließend per JKMount an Tomcat weiter geleitet werden ? Also erst mod_rewrite, dann mod_jk ?
Ja, so ist es. Im gennanten Beispiel von RiPhone ist das WebProjekt eigentlich über domain.tld/riphone/* anzusprechen. Die ganzen HTML und JavaScript Dateien sind darauf ausgerichtet. Da ich aber eben nicht vorhabe die statischen Inhalte via Tomcat auszuliefern, sondern via Apache, darf ich eben nicht via "JkMount /riphone/* ajp13" alles an den Tomcat übergeben, sondern eben nur die Servletaufrufe. Die biege ich mit der RewriteRule eben von /riphone/* auf /servlet/* um und binde nur dieses via JkMount um. Und ja, mod_rewrite wird anscheinend vor mod_jk ausgeführt, andernfalls würde die Sache nicht funktionieren.
Muss ich da irgendwas besonderes beachten, daß diese Reihenfolge beibehalten wird ?
Ich habe nichts spezielles unternommen.
Mein Szenario: ein vhost pro Applikation, Hostname wäre was Sinngebendes wie applikation.domain.tld. In der conf dieses vhosts würde ich requests an / z.B. auf /webappliaktion umleiten (per rewrite). /webapplikation würde ich dann per JKMount an Tomcat weiter geben. Geht das so ?
Der einfachste Fall mit kompletter Weiterleitung an Tomcat sollte in dem Fall wohl sein:
1. JkMount in der vhost Konfiguration des Apache via
JkMount /webapplikation/* ajp13
2. ModRewrite einbinden (falls noch nicht geschehen)
In /etc/sysconfig/apache2 den Eintrag APACHE_MODULES= um rewrite ergänzen.
3. Die .htaccess Datei anlegen/erweitern um:
RewriteEngine On RewriteBase / RewriteRule $ /webapplikation/xyz RewriteRule ;jsessionid\=(.*)$ /webapplikation/xyz;jsessionid=$1 RewriteRule ?JServSessionIdroot\=(.*)$ /webapplikation/xyz?JServSessionIdroot=$1 RewriteRule index\.html$ /webapplikation/xyz RewriteRule index\.html;jsessionid\=(.*)$ /webapplikation/xyz;jsessionid=$1 RewriteRule index\.html?JServSessionIdroot\=(.*)$ /webapplikation/xyz?JServSessionIdroot=$1
Damit landest Du dann mit http://domain.tld/webapplikation/xyz
Hallo,
Vielen Dank schon 'mal. Fragen: Zu 3: kann ich das auch in der conf eines vhosts machen oder brauche ich .htaccess ?
Du brauchst keine .htaccess, ist wieder so ne Sache, damit die Entwickler ändern könnne und nicht nur die Administratoren.
Was macht "RewriteRule $ /webapplikation/xyz" ? Mod_rewrite arbeitet mit RegExp, oder ? Der $ steht da normalerweise für Zeilenende, aber hier versteh ich das nicht so ganz. Oder steht $ für einen request auf /, da nach dem / ja das Zeilenende kommt ?
RewriteBase / setzt die Basis auf das Wurzelverzeichnis, alles was danach kommt, bezieht sich darauf. Da hier mit Regular Expressions gearbeitet wird, steht ein "RewriteRule $ /webapplikation/xyz" zusammengesetzt auf "applikation.domain.tld/$" lässt Du das $ weg, trifft die Regel auf alles zu, was mit applikation.domain.tld/ beginnt. Damit wären alle nachfolgenden Regeln wirkungslos. Wenn Du die $ am Ende weglässt, müsstest Du die Regeln in der Reihenfolge so anordnen, dass die oberen Regeln nicht vor den unteren zutreffen.
Würde mit dem von Dir beschriebenen Szenario folgendes funktionieren ? Request auf webapplikation.domain.tld ==> Umleiten per rewrite auf /webapplikation ==> Weiterleiten per mod_jk an tomcat auf /webapplikation ?
Bin mir nicht sicher, ob es ohne das / geht, müsste man ausprobieren, aber im Prinzip sollte es gehen. Normalerweise wird ja in dem Fall eine index.html aufgerufen, auch hierfür hab ich ja ne Regel angegeben. Warte mal, ich hab das doch schon bei nem Projekt da hab ich noch ne Regel: RewriteRule ^$ /webapplikation/xyz Damit müsste dann wirklich alles abgedeckt sein. In all meinen anderen Projekten hab ich nur Unterverzeichnisse umgelenkt. Und falls Dir das alles zu umständlich ist, nimm eine index.html ins Basisverzeichnis mit einer automatischen Weiterleitung wie hier beschrieben: http://de.selfhtml.org/html/kopfdaten/meta.htm#weiterleitung -- Machs gut | http://www.iivs.de/schwinde/buerger/tremmel/ | http://packman.links2linux.de/ Manfred | http://www.knightsoft-net.de -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org