打开文件httpd.conf
以apache2.2.3设置为例,配置虚拟主机下的rewrite
在主目录里面需要添加代码
取消 LoadModule rewrite_module modules/mod_rewrite.so前面的 #
RewriteEngine On
RewriteRule ^(.*)show-([\d]+)-([\d]+)\.html$ $1/leafage.jsp?id=$2&page=$3
RewriteRule ^(.*)list-([\d]+)-([\d]+)\.html$ $1/list.jsp?id=$2&page=$3
RewriteRule ^(.*)show-([\d]+)\.html$ $1/show.jsp?id=$2
RewriteRule ^(.*)area-([\d]+)-(.+)\.html$ $1/area.jsp?id=$2&page=$3
重新启动Apache.
//经过上面的测试Tomcat和Apache可以通了
上面的配置还可以在虚拟主机里配置:如下:
原来配置:
apache httpd.conf:
include "conf/mod_jk.conf"
mod_jk.conf:
LoadModule jk_module modules/mod_jk-1.2.23-apache-2.2.x-linux-i686.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel error
JkMount /*.jsp controller
JkMount /*.do controller
JkMount /*userAction.zip controller
...
JkMount /*.jar controller
JkMount /*.htm controller
JkMount /servlet/* controller
...........
作为虚拟主机配置文件httpd-vhost.conf的全局配置:
LoadModule jk_module modules/mod_jk-1.2.23-apache-2.2.x-linux-i686.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel error
NameVirtualHost *:80
...
include "/usr/local/apache22/conf/mod_jk.conf"
同样上面的伪静态也可写在虚似主机里面如下:
DocumentRoot /home/www_php168
ServerName
RewriteEngine On
RewriteRule ^(.*)/list-([0-9]+)-([0-9]+).htm$ $1/list.php?fid=$2&page=$3
RewriteRule ^(.*)/bencandy-([0-9]+)-([0-9]+)-([0-9]+).htm$ $1/bencandy.php?
fid=$2&id=$3&page=$4
但是:伪静态时,show-100-33.html明明是要先转变成leafage.jsp?id=100&page=33的
可是Apache做了析解之后没有交给Tomcat处理也就是说伪静态也析解了,就是没有给Tomcat处理。
最后在上面的文章里面看到在RewriteRule最加下
RewriteRule ^(.*)show-([\d]+)-([\d]+)\.htm $1/leafage.jsp?id=$2&page=$3
看来对RewriteRule参数还要研究
今天晚上折腾了一晚上终于把我们网站的二级域名问题和二级域名相关的问题解决了。并更新上去了。呵呵,小小总结一下。
第一部分,我的二级域名转向是在apache上配置的(其中的规则把我折腾了好几天)。
第二部分:在程序中用urlrewriter。jar包重写。其中和二级域名系相关的规则是
第三部分:在程序中的链接中用程序控制二级域名相关的链接 用硬连接的形式改写。
public static String getUrl(HttpServletRequest request){
在页面中
if "http://www.automation.com.cn".equals(preurl)
else
正常没有重新的连接