刚做完一个项目,因为是一个网站,所以会考虑到seo的东西。因为是用ssh做的,因此这里面就会出现*.action、*.jsp等不利于seo的一些值,所以就用urlrewtire这个插件做了处理,处理的相关内容如下:
1、下载urlrewrite-3.2.0.jar,当然也可以是其他版本,在这里我用的是这个版本。然后放到项目的lib目录下。
2、配置过滤器,在web.xml中添加以下代码:
1. <!-- url 重写 -->
2. <filter>
3. <filter-name>UrlRewriteFilter</filter-name>
4. <!-- 过滤器类所在的路径: -->
5. <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
6. </filter>
7.
8. <filter-mapping>
9. <filter-name>UrlRewriteFilter</filter-name>
10. <!-- 拦截所有url -->
11. <url-pattern>/*</url-pattern>
12. </filter-mapping>
13. <filter>
14. <filter-name>struts2</filter-name>
15. class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
16. </filter>
17. <filter-mapping>
18. <filter-name>struts2</filter-name>
19. <url-pattern>/*</url-pattern>
20. <dispatcher>REQUEST</dispatcher>
21. <dispatcher>FORWARD</dispatcher>
22. (有些网站没有加上?)
23. </filter-mapping>
,这里面尤其要记得修改struts2的过滤器的mapping中的几种dispatcher。因为在没有添加之前url重写无效。
3、添加urlrewrite.xml文件。改文件放在web.xml同一级目录下面。主要内容如下:
1. <!-- 将首页映射为/-->
2. <rule>
3. <from>/index.html</from>
4. "forward">queryFontModules.action</to>
5. </rule>
6. <!-- 将新闻内容映射为/news-contentId-moduleId.html -->
7. <rule>
8. 0-9]+)-([0-9]+).html$</from>
9. "forward">
10. 1&moduleId=$2
11. </to>
12. </rule>
。 第一个是没有产数的action映射为html。第二个是有两个参数的action映射为html。这里需要有几个注意的地方:一、多个参数在url中我 们用“&”符号链接,但在这里面如要转义为:“&”;二、原来url中的参数在这里用$1、$2......表示即可,但是顺序 要一致。
4、配置完成时候就可以使用了,例如在浏览器中输入.../index.html这个地址之后,程序会去执行queryFontModules.action这个action,但是地址栏中还是显示.../index.html,这样子就起到了url重写的目的。