如何将子域重写为路径?
例子:
- foo.bar .example.com --> example.com /foo/bar
或者更好的是(反向文件夹):
- foo.bar .example.com --> example.com /bar/foo
请求foo.bar .example.com 应该在 /src/main/resources/static/ bar/foo中发送一个文件 /index.html 中发送一个文件。
对于 Apache2,它由mod_rewrite完成。我找到了有关使用Tomcat 8重写的文档,但问题是使用 spring boot 将这些文件放在哪里?
更新
我尝试使用UrlRewriteFilter,但似乎无法使用正则表达式替换在域路径中定义规则。
这是我的配置:
Maven依赖:
<dependency>
<groupId>org.tuckey</groupId>
<artifactId>urlrewritefilter</artifactId>
<version>4.0.3</version>
</dependency>
Spring Java Config 注册 Servlet 过滤器:
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application
{
public static void main(String[] args)
{
SpringApplication.run(Application.class, args);
}
@Bean
public FilterRegistrationBean filterRegistrationBean()
{
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
registrationBean.setFilter(new UrlRewriteFilter());
registrationBean.addUrlPatterns("*");
registrationBean.addInitParameter("confReloadCheckInterval", "5");
registrationBean.addInitParameter("logLevel", "DEBUG");
return registrationBean;
}
}
/src/main/webapp/WEB-INF 中的urlrewrite.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite
PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN"
"http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd">
<urlrewrite>
<rule>
<name>Translate</name>
<condition name="host" operator="equal">foo.bar.example.com</condition>
<from>^(.*)</from>
<to type="redirect">example.com/bar/foo</to>
</rule>
</urlrewrite>
使用这个硬编码的域它可以工作,但它应该适用于这样的每个子域。