apache+tomcat 二级域名+url重写

今天晚上折腾了一晚上终于把我们网站的二级域名问题和二级域名相关的问题解决了。并更新上去了。 呵呵,小小总结一下。

 

第一部分,我的二级域名转向是在apache上配置的(其中的规则把我折腾了好几天)。

<VirtualHost *:80>
   # JkMount /* worker1(用这个不能实现二级域名跳转,只有分着jKmount 才能行,原因不明。自己认为是如设置成该种形式,表示所有的情况都给tomcat处理,包括二级域名的解析)
    JkMount /dwr/* worker1
    JkMount /dwr/interface/* worker1   
    JkMount /*.jsp worker1
    JkMount /*.do worker1
    JkMount /*.html worker1
    JkMount /*.htm worker1
    DirectoryIndex index.jsp index.html
    <Directory "/usr/apps/apache-tomcat-6/apps/ROOT">
        Options Indexes FollowSymLinks
        AllowOverride none
        Order allow,deny
        Allow from all
    DirectoryIndex index.jsp index.html welcome.jsp
 
  
    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^(www|web)\.automation\.com\.cn$
    RewriteRule ^/?$ /%{HTTP_HOST} (这一步很重要是把url链接改变成隐含参数的/bd.automation.com.cn的形式)
    RewriteRule ^/bd\.automation\.com\.cn$ /industry.do?method=showIndustry&industryname=louyu [L]

    RewriteCond %{HTTP_HOST} !^(www|web)\.automation\.com\.cn$
    RewriteRule (.*) /%{HTTP_HOST}/$1(这里url链接里面的参数是显示的,所以可以在下面那个规则中得到。这里费了我很长时间,真的觉得自己很笨,呵呵!)
    RewriteRule ^/bd\.automation\.com\.cn/([a-zA-Z]+)$ /industry.do?method=getList&mainname=louyu&name=$1 [L]
    </Directory>
 ServerAdmin [email protected]
    DocumentRoot "/usr/apps/apache-tomcat-6/apps/ROOT"
    ServerName www.automation.com.cn
    ServerAlias automation.com.cn
    ErrorLog "logs/www.automation.com.cn-error_log"
    CustomLog "logs/www.automation.com.cn-access_log" common
  </VirtualHost>

第二部分:在程序中用urlrewriter。jar包重写。其中和二级域名系相关的规则是

<rule>
        <condition  name="host">bd.automation.com.cn</condition>(这一点很重要,只有在匹配二级域名的时候起作用)
        <from>^/-do--list--id-(\d+).html$</from>
        <to>/communityDetail.do?method=showArticleList&amp;id=$1</to>
    </rule>

第三部分:在程序中的链接中用程序控制二级域名相关的链接 用硬连接的形式改写。

public static String getUrl(HttpServletRequest request){
        int ind = request.getRequestURL().toString().indexOf("/", 7);
        String preurl = "";
        if (ind == -1) {
            preurl = "http://www.automation.com.cn";
        } else {
            preurl = request.getRequestURL().toString().substring(0, ind);
        }
        if (preurl.equals("http://bd.automation.com.cn")) {
            preurl = "http://www.automation.com.cn";
        }
        return preurl;
    }

在页面中

if "http://www.automation.com.cn".equals(preurl)

     <a href="http://bd.automation.com.cn">二级域名相关链接</a>

else

    <a>正常没有重新的连接</a>

 

可能我的实现方法不是很好,请高人们指点一下,看看我的实现有什么改进的(一定有,我敢于接板砖!呵呵)?

 

你可能感兴趣的:(apache,tomcat,jsp,Web,DWR)