路径重写有很多用处。最基本最重要的目的就是SEO(搜索引擎优化),至于更多的目的就不过多讲述。而利用apache url rewrite 路径重写,则是很方便有效的方法。可以在尽可能减少程序代码变更的情况下,起到路径重写目的。
本文不只是简单的只讲路径重写。而是从项目中来,结合实践,来讲述路径重写过程。
在我的上一篇相关文章中,描述了如何处理负载均衡。可以参见 《windows 下apahce (2.2.11版)+tomcat+mod_jk整合,负载均衡基础实践 》一节。此文章略显粗糙。此文是在上篇文章基础上,进行后续操作。
这里给出apache url rewrite 路径重写过程、配置方法
1、在httpd.conf 中找到 #LoadModule rewrite_module modules/mod_rewrite.so
将前面的 # 去掉。目的,使路径重写生效。
2、在此配置文件最后面增加路径重写配置即可。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^/myapp/(.*)$ /$1 [L,PT]
RewriteRule ^/search/(.*)\.html$ /search.jsp\?key=$1 [L,PT]
RewriteRule ^/search/([0-9]+)-([0-9]+)-([0-9]+)-(.*)\.htm$ /search2\.jsp\?key=$1&order=$2&price=$3&page=$4 [L,PT]
</IfModule>
注意:
a、RewriteEngine on 是必须的。让路径重写生效。
b、 RewriteRule ^/myapp/(.*)$ /$1 [L,PT] 此句将myapp过滤掉。一般没有应用好服务器配置的话,用网址打开网站,容易看到应用名。如果你访问应用时,地址栏含有应用名,加上此句话,就可以将你的应用名去掉。即用户不可看到了。 myapp 是你的应用名哦。可别直接复制。
c、注意到 (.*) $1这些东西了吧。一个括号中的东西,是对应一个$占位的。具体语法,请看专业的文档吧。这里只给简单示例。
RewriteRule ^/search/([0-9]+)-([0-9]+)-([0-9]+)-(.*)\.htm$ /search2\.jsp\?key=$1&order=$2&price=$3&page=$4 [L,PT]
这句话,你就可以看到了。总共4个(),后面有四个$*,相对。位置很重要。位置指的是$1,$2,第一个、第二个位置。
d、在看[L,PT] 这个,这个是有含义的L是最后一个的规则。具体还是看专业文档。我一般就用这两个[L,PT]。我想一般这样也差不多 了。
3、apache 路径重写,是对动态路径的重写。还看最后的一个配置就可以看到了。即达到的效果是,用户访问时,地址栏中,显示的是html文档,但后台tomcat服务器,用的是jsp进行相应。至于apache+tomcat配置。看上篇文章咯。
apache url rewrite 路径重写,就简单写到这里,在稍后会加上系列文章之:apache+tomcat 单IP,多域名配置实践。
