Wie man Subdomains in Pfade umschreibt?
Beispiel:
Oder besser wäre (Ordner umzukehren):
Die Anforderung foo.bar .example.com sollte eine Datei in / src / main / resources / static / bar / foo /index.html.
Bei Apache2 geschieht dies durch mod_rewrite . Ich habe eine Dokumentation über das Neuschreiben mit Tomcat 8 gefunden, aber die Frage ist, wo diese Dateien mit Spring-Boot abgelegt werden ?
Aktualisieren
Ich habe versucht, den UrlRewriteFilter zu verwenden, aber es scheint nicht möglich zu sein, Regeln im Domain-Pfad zu definieren, die die Substitution von regulären Ausdrücken verwenden.
Dies ist meine Konfiguration:
Abhängigkeit von Maven:
%Vor%Spring Java Config zur Registrierung des Servlet-Filters:
%Vor%urlrewrite.xml in / src / main / webapp / WEB-INF
%Vor%Mit dieser hardcoded Domain funktioniert es, aber es sollte für jede Subdomain funktionieren.
Erstellen Sie Ihren eigenen Filter.
Dieser Filter sollte:
chain.doFilter
Durch die Weiterleitung werden keine URLs im Browser geändert. Senden Sie einfach den Inhalt der Datei.
Folgecode könnte die Implementierung eines solchen Filters sein. Dies ist keine Art von sauberem Code. Nur schnell und schmutzig Arbeitscode:
%Vor%Hier ist die Domain-Klasse:
%Vor%Und Sie brauchen einen Controller, der alles fängt
%Vor% Ich bin nicht sicher, ob dies notwendig ist, um andere Methoden in HttpServletRequestWrapper
zu überschreiben. Das ist Grund für einen Kommentar.
Sie müssen auch Fälle für die Dateiübertragung behandeln (nicht existent, ...).
Eine weitere Möglichkeit, dieses Problem zu lösen: Tun Sie es in Controller selbst. Dies ist meiner Meinung nach besser als mit Filter, weil:
/subdomain2path
gewählt. Die Methoden getSubdomain
und reverseDomain
sind die gleichen wie zuvor.
Das ist der Impl:
%Vor%Die Domain-Klasse ist dieselbe wie zuvor:
%Vor%Bitte verwenden Sie die folgende Abhängigkeit
%Vor%Erstellt urlrewrite.xml im Ressourcenordner
%Vor%
Hinzugefügt in main ApplicationRunner.java
%Vor%Und ein CustomURLRewriter erstellt
%Vor%Tags und Links java tomcat spring-boot embedded-tomcat-8 tomcat8