Apache 2.2 + Tomcat 5.5 使用UrlRewrite實現泛域名解析的方法_Web服務器教程

      編輯Tag賺U幣
      教程Tag:UrlRewrite添加

      1 安裝 tomcat/apache
      2 下載 jk.so, 具體版本請根據需要,不再多說
      3 關鍵是配置
      httpd.conf代碼如下:

      # 去掉這個前面的#,啟用它  
      LoadModule rewrite_module modules/mod_rewrite.so  
       
      # 啟用jk,同時配置參數  
      LoadModule   jk_module   modules/mod_jk.so         
      JkWorkersFile   D:/Apache2.2/conf/workers.properties       
      JkLogFile   d:/Apache2.2/logs/mod_jk.log       
      JkLogLevel   info     
      #JkLogLevel   debug       
      JkLogStampFormat   "[%a   %b   %d   %H:%M:%S   %Y]   "       
      JkOptions   +ForwardKeySize   +ForwardURICompat   -ForwardDirectories       
      JkRequestLogFormat   "%w   %V   %T"       
      JkMount   /servlet/*   myloadbalancer     
      JkMount   /*.jsp   myloadbalancer  
       
      # 虛擬主機,這里模擬了 a.test.com 和 b.test.com 以及 a.tst.com/blog的調用  
       
      <VirtualHost _default_:80>  
      ServerAdmin yourmail@domain.com  
      DocumentRoot D:\Apache2.2\htdocs  
      ServerName all-sites  
      ErrorLog logs/all-sites-error.log  
      CustomLog logs/all-sites-access.log common  
      RewriteEngine On  
      # 下面三行實現動態解析  
      RewriteCond %{HTTP_HOST} ^[a-z0-9\-]+\.test\.com$  
      RewriteRule ^/(.*)$ /%{HTTP_HOST}/$1 
      RewriteRule ^/([a-z0-9\-]+)\.test\.com/?$ /index.jsp?u=$1 [L,PT]  
      RewriteRule ^/([a-z0-9\-]+)\.test\.com/blog(/(.*))?$ /blog.jsp?u=$1&$3 [L,PT]  
       
      <Directory "D:\Apache2.2\htdocs">  
          Options FollowSymLinks  
          AllowOverride None  
          Order allow,deny  
          Allow from all  
      </Directory>  
       
      </VirtualHost> 

       

       
      # 去掉這個前面的#,啟用它
      LoadModule rewrite_module modules/mod_rewrite.so

      # 啟用jk,同時配置參數
      LoadModule   jk_module   modules/mod_jk.so      
      JkWorkersFile   D:/Apache2.2/conf/workers.properties    
      JkLogFile   d:/Apache2.2/logs/mod_jk.log    
      JkLogLevel   info  
      #JkLogLevel   debug    
      JkLogStampFormat   "[%a   %b   %d   %H:%M:%S   %Y]   "    
      JkOptions   +ForwardKeySize   +ForwardURICompat   -ForwardDirectories    
      JkRequestLogFormat   "%w   %V   %T"    
      JkMount   /servlet/*   myloadbalancer  
      JkMount   /*.jsp   myloadbalancer

      # 虛擬主機,這里模擬了 a.test.com 和 b.test.com 以及 a.tst.com/blog的調用

      <VirtualHost _default_:80>
      ServerAdmin yourmail@domain.com
      DocumentRoot D:\Apache2.2\htdocs
      ServerName all-sites
      ErrorLog logs/all-sites-error.log
      CustomLog logs/all-sites-access.log common
      RewriteEngine On
      # 下面三行實現動態解析
      RewriteCond %{HTTP_HOST} ^[a-z0-9\-]+\.test\.com$
      RewriteRule ^/(.*)$ /%{HTTP_HOST}/$1
      RewriteRule ^/([a-z0-9\-]+)\.test\.com/?$ /index.jsp?u=$1 [L,PT]
      RewriteRule ^/([a-z0-9\-]+)\.test\.com/blog(/(.*))?$ /blog.jsp?u=$1&$3 [L,PT]

      <Directory "D:\Apache2.2\htdocs">
          Options FollowSymLinks
          AllowOverride None
          Order allow,deny
          Allow from all
      </Directory>

      </VirtualHost>workers.properties查看復制到剪切板打印
      worker.list=myloadbalancer     
          
      worker.tomcat1.type=ajp13     
      worker.tomcat1.host=localhost     
      worker.tomcat1.port=8009     
      worker.tomcat1.lbfactor=1     
            
          
      worker.myloadbalancer.type=lb     
      worker.myloadbalancer.balance_workers=tomcat1     
      worker.status.type=status   

        worker.list=myloadbalancer  
         
        worker.tomcat1.type=ajp13  
        worker.tomcat1.host=localhost  
        worker.tomcat1.port=8009  
        worker.tomcat1.lbfactor=1  
           
         
        worker.myloadbalancer.type=lb  
        worker.myloadbalancer.balance_workers=tomcat1  
        worker.status.type=status  server.xml 
      去掉前后的<!-- 和 -->啟用 8009端口查看復制到剪切板打印
      <Connector port="8009"   
      .. 

       <Connector port="8009"
      ...說明一下
      在httpd.conf里面啟用了rewrite_module,和 mod_jk, 并配置了 與tomcat的連接配置。
      虛擬主機的配置是關鍵
      ServerName all-sites
      可以修改為
      ServerName test.com
      ServerAlias *.test.com
      這樣可以明確指定這個虛擬主機負責的域名
      urlRewrite 配置部分

      RewriteCond %{HTTP_HOST} ^[a-z0-9\-]+\.test\.com$  
      RewriteRule ^/(.*)$ /%{HTTP_HOST}/$1

      RewriteRule ^/([a-z0-9\-]+)\.test\.com/?$ /index.jsp?u=$1 [L,PT]  
      RewriteRule ^/([a-z0-9\-]+)\.test\.com/blog(/(.*))?$ /blog.jsp?u=$1&$3 [L,PT]  
      第一行,聲明這個重寫只對主機名(%{HTTP_HOST}) 類似 XXXX.test.com  感興趣,那個是正則的
      第二行,將所有的對此域名的請求進行第一次改寫,比如
      a.test.com 改成
      /a.test.com
      把 
      b.test.com/blog 改成
      /b.test/com/blog
      第三行,對無參數的訪問進行調整
      將 /a.test.com 改成
      /index.jsp?u=a
      第四行,對有參數路徑的進行調整
      將 /b.test.com/blog 改成
      /blog.jsp?u=b
      如果還有參數比如
      b.test.com/id=3 則最終改寫為
      /b.test.com/id=3
      /blog.jsp?u=b&id=3
      剩下的就不多說了!

      來源:網絡搜集//所屬分類:Web服務器教程/更新時間:2011-12-08
      相關Web服務器教程