2016-09-14 169 views

回答

1

是的,这是可能的。你需要这两个步骤如下:

  1. 实现自己TomcatEmbeddedServletContainerFactory的bean,并成立了RewriteValve

    import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory; 
        ... 
        import org.apache.catalina.valves.rewrite.RewriteValve; 
        ... 
    
        @Bean TomcatEmbeddedServletContainerFactory servletContainerFactory() { 
        TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory(); 
        factory.setPort(8080); 
        factory.addContextValves(new RewriteValve()); 
        return factory; 
        } 
    
  2. 一个rewrite.conf文件添加到应用程序的WEB-INF目录,指定重写规则。这里是一个rewrite.conf内容的示例,我在角度应用程序中使用该内容来利用角度的PathLocationStrategy(基本上,我将所有内容都重定向到index.html,因为我们只是使用spring引导来提供静态Web内容):

    RewriteCond %{REQUEST_URI} !^.*\.(bmp|css|gif|htc|html?|ico|jpe?g|js|pdf|png|swf|txt|xml|svg|eot|woff|woff2|ttf|map)$ 
        RewriteRule ^(.*)$ /index.html [L]