Tomcat 8.0 Umschreiben Ventil
Ich versuche, mit der RewriteValve in Tomcat 8.0 http://tomcat.apache.org/tomcat-8.0-doc/rewrite.html
In $CATALINA_HOME/conf/server.xml Hinzugefügt habe ich
<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />
rechts unten die Host-Tags
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
Erstellt eine rewrite.config
im $CATALINA_HOME/conf
Verzeichnis mit dem folgenden
RewriteRule ^/abc /myapp
wo http:/host:port/myapp
ist eine funktionierende webapp.
So, jetzt, wenn ich gehen, um http://host:port/abc
ich erwarte umgeleitet werden http://host:port/myapp
aber ich bekomme eine 404 the requested resource is not available
statt.
Sieht es nicht aus, es ist sogar das Lesen meiner schreiben.config-Datei. Der access log im Verzeichnis logs nur Berichte die "GET /abc HTTP/1.1" 404 1000
mit keine weiteren details.
Was bin ich? Dank
- Haben Sie aktiviert die DEBUG-Protokollierung für
RewriteValve
? Alles relevante in den logs? Auf den ersten Blick, was Sie sieht richtig. Welche version von Apache Tomcat verwenden Sie? - Wie kann ich aktivieren Sie die DEBUG-Protokollierung für
RewriteValve
? Ich bin Tomcat verwenden 8.0.15 - Chris - Irgendwelche Ideen, was ich sonst noch versuchen? Ich bin etwa mit meinem Latein am Ende, nicht sicher, wie Sie Sie Debuggen/Fehlersuche diese weiter. Vielen Dank für jede Hilfe.
- Lesen Sie die Tomcat-users' guide Abschnitt Protokollierung finden Sie unter konfigurieren
DEBUG
logging für einzelne Klasse. Sie im Grunde nur eine Zeile hinzufügen, umlogging.properites
mit dem die Konfiguration der Java-logging-Mechanismus (java.util.log
). - Ich habe das ja auch schon. Ich habe eine Zeile nach $CATALINA_HOME/conf/logging.Eigenschaften
org.apache.catalina.valves.rewrite.RewriteValve.level = FINE
aber das hat nicht zu funktionieren scheinen, keine Einträge in einer der log-Dateien in /logs. - Chris - Irgendwelche Ideen? Ich ging zurück zu den URLRewriteFilter in tuckey.org/urlrewrite, aber da dies nun integriert Tomcat, ich würde wirklich gerne, es zu benutzen, anstatt noch eine Dritte Komponente.
- Oh, leider, das
RewriteValve
nicht mit seinem eigenen (Klassen-spezifisch) logger. Stattdessen meldet es sich zu seinem container Ventil. Also, wenn Sie Ihre<Valve>
so konfiguriert, dass ein Kind von der<Host>
, dann müssen Sie ändern Sie den "log level" auf dem host (wie dieser:org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = DEBUG
). - OK jetzt sind wir immer irgendwo. DEBUG hat nicht funktioniert. Ich fügte
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = FINE
conf/logging.Eigenschaften und sah19-Nov-2014 13:30:21.322 FINE [Catalina-startStop-1] org.apache.catalina.valves.rewrite.RewriteValve.startInternal No configuration resource found: Catalina/localhost/rewrite.config in ...
im localhost.2014-11-19.log. Also zog ich meine umschreiben.config Datei von /conf conf/Catalina/localhost " und jetzt ist es hob meine rewrite-Regeln. Vielleicht ist die Dokumentation kann dies verdeutlichen. Danke. - Ja, ich habe bemerkt, eine Menge Raum für Verbesserungen mit der Dokumentation. Die
RewriteValve
ist ein neues feature, ohne viele Kilometer unter den Gürtel, so ist dies ein gutes feedback.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Tomcat-Dokumentation http://tomcat.apache.org/tomcat-8.0-doc/rewrite.html geschrieben
also versuchen, sich zu bewegen
rewrite.config
in$CATALINA_HOME/conf/Catalina/localhost
Kleiner Tipp: Sie können falsch schreiben etwas in
rewrite.config
( z.B.xxRewriteRule
) und dann, wenn tomcat liest diese Datei es scheitert. Ich denke, in Ihrem Fall tomcat gestartet wird, auch wenn Sie etwas falsch (da nicht gelesen).Wenn Sie möchten, etwas anderes als den Standard-Pfad
$CATALINA_HOME/conf/Catalina/localhost
Sie vielleicht in der Lage zu nutzen, die resourcePath Feld in Ihrer RewriteValve xml-definition geben Sie einen relativen Pfad zu der Konfigurationsdatei. (Zugegeben, ich habe nicht verwendet diese.)Alternativ können Sie das Ventil zu
$CATALINA_HOME/conf/context.xml
und dann verschiebenrewrite.config
in Ihre web-Anwendung WEB-INF-Ordner.Aus der Dokumentation:
Musste ich auskommentieren das AccessLogValve in der server.xml für meine rewrite-Ventil zu arbeiten
Laut apacheDoc
Rewrite-Ventil konfiguriert ist, als ein Ventil, mit dem org.apache.catalina.Ventile.umschreiben.RewriteValve Klasse name.
Rewrite-Ventil kann konfiguriert werden als ein Ventil Hinzugefügt, die in einem Host. Der virtual-server-Dokumentation für Informationen, wie es zu konfigurieren. Es wird ein neu zu schreiben.config-Datei mit den rewrite-Direktiven, es muss gelegt werden, in den Host-Ordner "configuration".
Kann es auch im die context.xml von einer webapp. Das Ventil wird dann mit einem neu zu schreiben.config-Datei mit den rewrite-Direktiven, Sie muß sich im Ordner WEB-INF der web-Anwendung