Ich habe eine AngularJS Webapp und Jersey Backend. Ich muss das URL-Rewriting einrichten, also wird alles außer Ausnahmen in Angulars index.html umgeschrieben.Tomcat 8 URL Rewrite
Eg .:
http://my.domain.com/about will be rewritten
http://my.domain.com/photos/photo1.jpg will NOT be rewritten (file photo 1 exists)
http://my.domain.com/rest/myservice will be NOT be rewritten (it is a call to REST service)
Ich habe die Tomcat 8 URL Rewrite Ventil wie folgt festgelegt:
in conf/server.xml
<Host name="my.domain.com" appBase="webapps/MyDomainServer" unpackWARs="true"
autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />
<!-- access logging, aliases,...-->
</Host>
in conf/Catalina/my.domain.com/rewrite.config
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} ^/rest.*
RewriteRule^- [L]
RewriteRule^index.html [L]
Tomcat ignoriert meine Einstellungen zum Neuschreiben, es wird nichts neu geschrieben, im Protokoll ist kein Fehler/Ausnahmefehler. Was mache ich falsch? Danke im Voraus.
Ich habe versucht, RewriteValve zu config.xml in META-INF zu verschieben und Config in WEB-INF umschreiben, aber es verhält sich auf die gleiche Weise.
Aber warum war es fehlerhaft? Ich habe das gleiche Problem. % {REQUEST_FILENAME} ist immer NULL ... –
... und SCRIPT_FILENAME ist korrekt, aber RewriteCond% {SCRIPT_FILENAME} -f beschwert sich über ein fehlendes Vorzeichen/in der Ressource. Es ist ein Windows-System. Also ist der Pfad C: \ ... ohne vorangestellt/ –
In unserem Fall haben wir {REQUEST_URI} anstelle von (REQUEST_FILENAME} verwendet. Wir konnten die Regeln nicht komplett löschen, da wir keine lokalen Assets für die Anwendung laden konnten Das Ändern von! -f und! -d, um REQUEST_URI zu verwenden, scheint zu funktionieren, zumindest für den Moment. –