Tomcat 8 URL-Rewrite
Ich habe eine AngularJS webapp und Jersey-backend. Ich brauche, um das setup-URL-rewriting, also alles außer bestimmten Ausnahmen umgeschrieben werden zu Eckig ist index.html.
ZB.:
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)
Habe ich den Tomcat-8 URL-Rewrite-Ventil wie folgt:
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/meine.domain.com/umschreiben.config
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} ^/rest.*
RewriteRule ^ - [L]
RewriteRule ^ index.html [L]
Tomcat ignoriert meine rewrite-Einstellungen, nichts wird umgeschrieben, kein Fehler/exception im log. Was mache ich falsch? Vielen Dank im Voraus.
Habe ich versucht zu bewegen RewriteValve zu config.xml in der META-INF und umschreiben der config zu WEB-INF, sondern es verhielt sich in der gleichen Weise.
InformationsquelleAutor kamelot | 2015-02-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich die Lösung gefunden, problem war falsch/fehlerhaft schreiben.config-Datei.
Richtig sollte sein:
In der ersten Zeile aufgelistet sind URIs, die nicht umgeschrieben werden sollen. Alles andere wird neu geschrieben werden index.html.
... und SCRIPT_FILENAME ist richtig, aber RewriteCond %{SCRIPT_FILENAME} -f beschwert sich über einen fehlenden führenden / in der Ressource. Seine einem Windows-system. Also der Pfad ist C:\... ohne führenden /
In unserem Fall verwendeten wir {REQUEST_URI} statt (REQUEST_FILENAME}. Wir konnten nicht drop, die Regeln komplett, weil wir waren nicht in der Lage zu laden, lokalen Ressourcen, um die Anwendung, sondern ändern !-f und !-d verwenden REQUEST_URI scheint zu funktionieren, zumindest für jetzt.
InformationsquelleAutor kamelot
Ist diese Applikation als java web app (KRIEG)? Könnte man implementieren diese in Ihre web.xml:
Das ist absolut die falsche Lösung. Die akzeptierte Antwort ist dynamisch, wo diese Antwort ist hardcoded
für bestimmte Umstände, das funktioniert gut und angemessen ist. Betrachten Sie einen Tomcat-Instanz für mehrere war-Dateien. Die dynamische Lösung, die angegangen werden müssen, um Platz für etwas neues und anderes. Diese Lösung ist selbsterklärend.
InformationsquelleAutor Nicholas Hirras
Konnte ich nicht, dies funktioniert mit dem REQUEST_URI, und ich wusste nicht, wie zu müssen, Ausnahmenliste für Dateien wie auch immer, ich löste es in einem leicht unterschiedliche Art und Weise.
InformationsquelleAutor mhvelplund