2017-01-05 2 views
1

Je souhaite diriger tout lien autre qu'une ressource statique (par exemple, js, images, etc.) vers mon index.html. J'ai fait les changements suivants.La réécriture de la vanne Tomcat ne fonctionne pas

J'ai ajouté un context.xml dans app.war/META-INF répertoire qui contient:

<Context> 
    <Valve className="org.apache.catalina.valves.rewrite.RewriteValve" /> 
</Context> 

J'ai aussi rewrite.config dans app.war/WEB-INF répertoire qui contient:

RewriteCond %{REQUEST_URI} ^/(css|img|js|partials|rest|favicon).*$ 
RewriteRule ^.*$ - [L] 
RewriteRule ^.*$ /index.html [L,QSA] 

Cependant, avec les paramètres ci-dessus, ce qui se passe est que tous les de mes fichiers js et css montrent index.html contenu (dans la console du navigateur). Pourriez-vous suggérer quel serait le problème ici?

Répondre

1

Votre règle finale réécritures tout à /index.html:

RewriteRule ^.*$ /index.html [L,QSA] 

Si vous pensez que les règles ci-dessus correspondront en premier, vous avez raison, sauf qu'une demande à un fichier par exemple /styles.css ne correspond pas à l'expression que vous avez pour les artefacts statiques:

RewriteCond %{REQUEST_URI} ^/(css|img|js|partials|rest|favicon).*$ 

Le problème est que vous exigez la partie css de l'URI de la demande d'avoir au moins un caractère après. Une demande à /css/style.css devrait fonctionner.

+0

Merci pour la réponse. Je ne comprends pas complètement le problème que vous mentionnez. Mes fichiers css et js sont présents en tant que tels: '/ myapp/projet/css/projet-123.css''/myapp/projet/js/projet-123.js' Cependant, ceux-ci montrent du contenu index.html. – Dan

+0

Aucun de ces noms de fichiers ne correspond à votre modèle d'expression régulière: ils commencent par '/ myapp' et non par'/css'. –

+0

Merci d'avoir identifié le problème @Christopher. J'ai changé mon RegEx à '(?!. * \. (?: jpg | png | css | js | json | scss) $). * $' Et maintenant cela fonctionne. – Dan