spring mvc url 由 nginx 重写

spring mvc url rewrite by nginx

我正在使用标签 mvc:resources 来处理我的 spring mvc 项目中的静态文件。

好吧,我想使用 SEO 重写 url,例如 /page?id=1 >> /page/1.html.

[spring-context.xml]

<mvc:annotation-driven />
<mvc:resources location="/WEB-INF/view/css/"    mapping="/css/**" />
<mvc:resources location="/WEB-INF/view/images/" mapping="/images/**" />
<mvc:resources location="/WEB-INF/view/js/" mapping="/js/**" />
<mvc:resources location="/WEB-INF/view/jsp/" mapping="/jsp/**" />

[nginx.conf]

rewrite      ^/page/(.*)(.html)$ /page?id= last;
proxy_pass   http://127.0.0.1:8080/project/;

问题:

所有的静态文件都会加一个前缀page,绝对不能获取到正确的文件,

比如'localhost/js/index.js'变成'localhost/page/js/index.js'

那么我该如何解决这个问题呢?有什么建议吗?

我试过用urlrewritefilter(org.tuckey)得到同样的情况QAQ

我相信你现在已经找到了你的答案,但我会为那些在你之后寻找相同答案的人回答。

location ~ ^/script/(.*)$ {
                        alias   /var/lib/tomcat7/webapps/ROOT/assets/js/;
                        autoindex off;
                }


    location ~ ^/styles/(.*)$ {
                        alias   /var/lib/tomcat7/webapps/ROOT/assets/css/;
                        autoindex off;
                }


    location ~ ^/images/(.*)$ {
                        alias   /var/lib/tomcat7/webapps/ROOT/assets/images/;
                        autoindex off;
                }

以上相当于nginx中的以下spring资源映射

<mvc:resources mapping="/images/**" location="/assets/images/"/>
<mvc:resources mapping="/styles/**" location="/assets/css/"/>
<mvc:resources mapping="/script/**" location="/assets/js/"/>

希望对您有所帮助

此致,