Mon problème est le suivant: J'ai le serveur d'applications JBoss 4.2.3 avec le connecteur AJP 1.3 fonctionnant sur un hôte sous Windows (192.168.1.2 pour mon environnement de test) et Apache 2.2.14 fonctionnant sur une autre case FreeBSD (192.168.1.10). Apache agit comme une «porte d'entrée» pour toutes les demandes et les envoie à JBoss via mod_jk. Tout fonctionnait bien jusqu'à ce que je devais faire des optimisations SEO. Ces optimisations incluent des URLs SEF, j'ai donc décidé d'utiliser mod_rewrite pour Apache afin de modifier les requêtes avant qu'elles ne soient envoyées à JBoss. En fait, je nedd à mettre en œuvre 2 règles:Configurer mod_rewrite et mod_jk pour Apache 2.2 et JBoss 4.2.3
- Rediriger anciennes règles comme "http://hostname/directory/" à "http://hostname/" avec redirection permanente
- Forward urls comme "http://hostname/wtf/123/" à "http://hostname/wtf/view.htm?id=123" afin que l'utilisateur final n » t voir l'URL "laide" (la réécriture réelle).
Voici ma config Apache pour le test hôte virtuel:
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/usr/local/www/dummy"
ServerName 192.168.1.10
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule /directory/(.*) /$1 [R=permanent,L]
RewriteRule ^/([^/]+)/([0-9]+)/?$ /$1/view.htm?id=$2
</IfModule>
JkMount /* jsp-hostname
ErrorLog "/var/log/dummy-host.example.com-error_log"
CustomLog "/var/log/dummy-host.example.com-access_log" common
</VirtualHost>
Le problème est que la deuxième règle de réécriture ne fonctionne pas. Les demandes passent à JBoss inchangé, donc je reçois l'erreur Tomcat 404. Mais si j'ajoute le drapeau de redirection à la deuxième règle comme
RewriteRule ^/([^/]+)/([0-9]+)/?$ /$1/view.htm?id=$2 [R,L]
cela fonctionne comme un charme. Mais la redirection n'est pas ce dont j'ai besoin ici :). Je suspecte que le problème est que les demandes sont transmises à l'autre hôte (192.168.1.2), mais je n'ai vraiment aucune idée sur la façon de le faire fonctionner. Toute aide serait appréciée :)