在Spring Boot中重定向到AngularJS快照

时间:2016-07-12 19:24:13

标签: angularjs spring tomcat spring-boot seo

在我的Spring Boot应用程序的路径src/main/resources/static下,我有我的AngularJS 1.5应用程序的来源。使用Grunt我可以将它缩小到src/main/resources/static/dist进行制作。但是对于开发模式,我使用源代码,因为我不想等待更改的构建过程。

当我检测到应用程序在生产/暂存中运行时,我使用此配置动态使用dist文件夹:

@Configuration
public class StaticResourceConfiguration extends WebMvcConfigurerAdapter {

    @Autowired
    private Environment environment;

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        if (isProduction() || isStaging()) {
            registry.addResourceHandler("/**").addResourceLocations("classpath:/static/dist/");
        } else {
            super.addResourceHandlers(registry);
        }
    }

    private boolean isProduction() {
        return Arrays.asList(environment.getActiveProfiles()).contains("production");
    }

    private boolean isStaging() {
        return Arrays.asList(environment.getActiveProfiles()).contains("staging");
    }
}

这完美无缺。 为了开始关注Angular应用程序的SEO,我在构建过程中添加了grunt-html-snapshots,以便快照构建到src/main/resources/static/dist/snapshots/。查看结果结构:

snapshots directory structure

如果我在请求路径中检测到escaped_fragment,我现在如何重定向到快照?我应该基于嵌入式Tomcat实现一些东西吗?或者在Spring Boot代码中重写一些?在Apache2和嵌入式Tomcat之间的生产中?

html-snapshots建议像普通Apache2一样解决它:

<ifModule mod_rewrite.c>
  RewriteCond %{QUERY_STRING} ^_escaped_fragment_=(.*)$
  RewriteCond %{REQUEST_URI} !^/snapshots [NC]
  RewriteRule ^(.*)/?$ /snapshots/$1 [L]
</ifModule>

有人有经验如何做到最好吗?

0 个答案:

没有答案