Rediriger les sous-domaines sur tomcat via Apache Server avec mod_jk
-
06-07-2019 - |
Question
J'ai une configuration Tomcat (6.0.20) et Apache Server (2.2) et j'essaie de rediriger tous les sous-domaines vers un contexte spécifique, sur mon domaine.
Par exemple, s.example.com redirige vers www.example.com
Apache envoie les requêtes via mod_jk
(j'ai essayé mod_proxy
, mais les fichiers css et js ne se sont pas chargés car ils ne sont pas des URL absolues).
Ma configuration actuelle:
httpd.conf:
Include C:/apache-tomcat-6.0.20/conf/auto/mod_jk.conf
RewriteEngine On
<VirtualHost *:80>
ServerName www.example.co.za
ServerAlias www.example.co.za example.co.za *.example.co.za
RewriteEngine on
RewriteLog "C:/Program Files/Apache Software Foundation/Apache2.2/logs/rewrite.log"
RewriteLogLevel 3
RewriteCond %{HTTP_HOST} example\.co\.za.*$ [NC]
RewriteRule ^(.*)$ http://www.example.co.za [L]
JkMount /* worker1
</VirtualHost>
JkMount /* worker1
server.xml:
<Host name="www.example.co.za" appBase="hosts/example"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="C:/apache-tomcat-6.0.20/logs" prefix="localhost_access_log."
suffix=".txt" pattern="common" resolveHosts="false"/>
<Context path="" docBase="Property"/>
<Alias>*.example.co.za</Alias>
</Host>
La redirection pour ww.example.com passe dans une boucle de redirection non-stop.
Ceci est extrêmement important du point de vue de la sécurité, car l'utilisateur peut accéder au gestionnaire de tomcat et aux autres applications du serveur (notamment hudson).
La solution
Essayez cette règle:
RewriteCond %{HTTP_HOST} !^www\.example\.co\.za$
RewriteRule ^ http://www.example.co.za [L]
Et si vous souhaitez conserver l'URI demandé:
RewriteCond %{HTTP_HOST} !^www\.example\.co\.za$
RewriteRule ^ http://www.example.co.za%{REQUEST_URI} [L]
De plus, je vous recommande d'utiliser une redirection 301. Ajoutez donc le drapeau R
avec la valeur 301 en remplaçant [L]
par [L, R = 301]
.