2009-08-17 11 views
6

J'ai un Apache et Tomcat en cours d'exécution et j'utilise mod_jk pour les lier. J'ai un travailleur Tomcat appelé « TC1 » et la configuration suivante sur mon VirtualHost:mod_jk conflits avec mod_rewrite

JkMount /* tc1 
JkUnMount /*.png tc1 
JkUnMount /*.gif tc1 
JkUnMount /*.css tc1 
JkUnMount /*.js tc1 

De cette façon, Tomcat sert toutes les demandes à part celles pour les fichiers statiques.

Maintenant, je veux utiliser mod_rewrite et faire quelque chose très simple comme:

RewriteEngine On 
RewriteRule ^/foo$ /bar [L] 

Réécrire la dynamique à pageview «/foo » à «/bar », mais il ne fonctionne pas parce que tous les urls traitées par mod_rewrite ne finissent pas dans mod_jk.

J'ai lu le Apache Tomcat Connector documentation et essayé tous les JkOptions mais rien n'a changé.

Est-ce que quelqu'un sait comment résoudre ce problème? Est-ce que les commandes mod_jk et mod_rewrite de commandes de commandes et de déclarations jouent un rôle dans le traitement de l'URL?

grâce

Répondre

12

Ce qui est étrange, car par défaut un RewriteRule envoie une redirection côté client, de sorte que le client doit faire une deuxième demande/bar qui devrait être pris par votre JkMount. Est-ce que votre journal d'accès affiche la demande pour /foo et la demande pour /bar également?

Essayez cette règle à la place:

RewriteRule ^/foo$ /bar [PT,L] 

Le "PT" signifie "pass-through", et est un Bodge de réécriture qui vous permet de muter l'URL in situ et permet à d'autres modules obtenir un coup d'oeil à, sans envoyer de redirection.

+0

Merci pour votre réponse. Je vais essayer cela et afficher les résultats. Notez que je ne veux pas de redirection côté client, mais une réécriture d'URL. – cherouvim

+0

Merci beaucoup! PT (passthrough) est ce que je voulais! – cherouvim