web-dev-qa-db-fra.com

Besoin d'aide sur l'URL de Tomcat mod_rewrite ou mod_jk

J'essaie de supprimer le nom de contexte de l'URL de mon serveur.

URL actuelle - http://www.domainname.com/MyApp/

Ce que je dois faire est de le rendre disponible sur - www.domainname.com/

Donc, il ne va héberger qu'une seule application principale et doit être affiché lorsque nous ouvrons www.domainname.com/ sur le navigateur.

J'ai déjà essayé plusieurs choses comme ci-dessous -

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/(Context/.*)$
RewriteRule ^/(.*)$ /Context/$1 [P,L]

OR

redirect permanent /MyApp/ abcd://domainname.com

OR

Utiliser JKMount -

JkMount /MyApp/* ajp13
JkMount /MyApp* ajp13

OR

Déployez le fichier war sur ROOT de Tomcat et créez des modifications pertinentes dans les fichiers Web et server.xml. Tout cela ne fonctionne pas et je continue à avoir une erreur intenal. J'ai besoin d'un moyen de couper l'URL de Tomcat pour faire court.

2
Redbull Fan

En supposant que http://www.domainname.com/MyApp/ fonctionne comme il est ... ne devriez-vous pas pouvoir simplement utiliser votre RewriteRule final? Il suffit de déposer le RewriteCond et le drapeau "P".

Ou si vous allez utiliser mod_rewrite pour créer le proxy avec l'indicateur 'P', n'avez-vous pas besoin d'utiliser l'URL complète dans RewriteRule? Quelque chose comme http://tomcatserver:tomcatport/Context/$1

1
matthew

Vous devriez arrêter d'utiliser mod_jk et commencer à utiliser mod_proxy. J'exécute Tomcat sur le port 8080. L'application Web qui alimente mon site a une URL interne telle que http://localhost:8080/mysite J'utilise mod proxy pour le rendre disponible sur http://mysite.example.com/ J'utilise un pare-feu pour garantir que seul le port 80 est accessible. du monde extérieur. mod_proxy est beaucoup plus flexible que mod_jk. Tomcat rend l'application disponible à la fois sur le port HTTP 8080 et sur les ports utilisés par défaut par mod_jk, de sorte que vous n'aurez probablement même pas à modifier vos paramètres Tomcat.

Ma configuration Apache ressemble à ceci pour ce site

<VirtualHost *:*>
    Servername mysite.example.com
    ProxyRequests Off
    ProxyPass / http://localhost:8080/mysite/
    ProxyPassReverseCookiePath /mysite /
    ProxyPassReverseCookieDomain localhost mysite.example.com
</VirtualHost>

Le cookie est conçu pour que les cookies de session soient correctement traduits par mod_proxy. Vous pouvez également demander à mod_proxy de réécrire les liens si vous en avez besoin. Dans mon cas, mon application Web gère cela.

0
Stephen Ostermiller