jeffy

BlogJava 首页 新随笔 联系 聚合 管理
  70 Posts :: 1 Stories :: 14 Comments :: 0 Trackbacks

Apache与Tomcat的整合,以及Rewrite的使用  http://blog.niwota.com/a/163891.htm

1.  支持二级动态域名   
   a.首先需要域名提供商支持 泛域名解析。
   b, 在Apache中做如下重写(只写Rewrite部分了):
再举一个可能更常见的实例,假设一个博客系统,要求把
http://xxx.eponet.cn 隐式的重写成 http://www.eponet.cn/member?id=xxx
RewriteCond %{HTTP_HOST} ^[a-z0-9\-]+\.iecn\.cn$
RewriteRule ^/?$ /%{HTTP_HOST}
RewriteRule ^/([a-z0-9\-]+)\.iecn\.cn/?$ /blog.php?u=$1 [L] 

 # 下面三行实现动态解析
RewriteCond %{HTTP_HOST} ^[a-z0-9\-]+\.iecn\.cn$
RewriteRule ^/(.*)$ /%{SERVER_NAME}/$1 ##注##
RewriteRule ^/([a-z0-9\-]+)\.iecn\.cn/(.*)$ /YourWwwRoot/$1/$2 [L]

Apache下用rewrite实现动态二级域名解析  http://www.360doc.com/showWeb/0/0/263162.aspx 
Tomcat二级域名实现  http://bbs2.chinaunix.net/archiver/?tid-929265.html

二级域名地址栏显示问题:http://my.iecn.net/bbs/view/105627.html
级域名问题,急 2006-10-03 16:50:15
RewriteCond Host: (?!/.|www|bbs)(.*).b2b.test.com
RewriteRule (.*) http://b2b.test.com/company/$1$2 [I,R]
我想让地址栏显示为 xxx.b2b.test.com,而不是http://b2b.test.com/company/xxx,该怎样写呀?
在下先谢谢了 

有两点:
首先,RewriteRule的“R”标识符的意思就是显式的重定向URL,就是说对浏览器来讲是一次重新的请求,这

样显然地址栏里显示的是新的址址;
其次,在RewriteRule中,一旦域名发生了变化,即便没有用“R”标识符,也会显式的重定向URL。
最后还有一点,你的写法本来就是错误的,$1、$2,匹配的是RewriteRule里的匹配,而不是RewriteCond

里的。

你的这种情况应该写成:
RewriteCond %{HTTP_HOST} ^([a-z0-9\-]+)\.b2b\.test\.com$
RewriteCond %{HTTP_HOST} !^(www|bbs)\.b2b\.test\.com$
RewriteRule (.*) /%{HTTP_HOST}/$2
RewriteRule /([a-z0-9\-]+)\.b2b\.test\.com/(.*)$ /company/$1/$2 [L]

以上就是分两步,把域名中你需要的一个名字提取出来,这种情况只能这样写,同时如果想实现你所说的

地址栏上看起来没变,在重写中不能出现http,这样就要求你所有转向的域名都要解析到这个服务器下。

如果你用的是apache的NameVirtualHost,你可以把这一组放到第一组,这样当没有域名匹配时,默认就是

第一组。如果做不到这一点,就意味着你要在ServerAlias放所有用到的域名了。


谢谢这位高手,小弟愚昧
RewriteRule (.*) /%{HTTP_HOST}/$2
这句甚末意思呀?$2表示的是甚末?

RewriteRule /([a-z0-9\-]+)\.b2b\.test\.com/(.*)$ /company/$1/$2 [L]
指定到那个目录了?

我打算实现的是把bbbbbb.test.com ,指定到/company/bbbbbb下,该怎样实现? 
    

写错了。
RewriteRule (.*) /%{HTTP_HOST}/$2
应该是:
RewriteRule (.*) /%{HTTP_HOST}/$1

比如 http://xxx.b2b.iecn.net/abc
重写后就是 http://xxx.b2b.iecn.net/xxx.b2b.iecn.net/abc

注意这只是一个过渡,目的是把域名中的xxx提出来(这才是最终目的),因为这个目录显然不存在,也只

有这样才能把域名中的东西提出来。


我说一下apache的处理过程吧

1: RewriteCond %{HTTP_HOST} ^([a-z0-9\-]+)\.b2b\.test\.com$
2: RewriteCond %{HTTP_HOST} !^(www|bbs)\.b2b\.test\.com$
3: RewriteRule (.*) /%{HTTP_HOST}/$1
4: RewriteRule /([a-z0-9\-]+)\.b2b\.test\.com/(.*)$ /company/$1/$2 [L]

假设现在访问 http://xxx.b2b.test.com/abc

apache的处理过程是:
首先进入3,注意rewite的过程是先看RewriteRule的匹配再去找它关面的条件,显然.*是任何情况都适合

的;
匹配成功,会找它前面尽可能多的条件,在这里1和2的条件都起作用,就是说符合 *.b2b.test.com 但不

能是 www.b2b.test.com 或 bbs.b2b.test.com;
条件成立后,进行替换,经替换后变成 http://xxx.b2b.test.com/xxx.b2b.test.com/abc,注意这只是一

个过渡!
接下来执行4,经过4的替换后就变成了 http://xxx.b2b.text.com/xxx/abc

以上这些我没有实际去试过,不排除有个别的手误造成的小错误,你实际试一下。一个是你可以看rewrite

日志,或者你先把4改成:
RewriteRule /([a-z0-9\-]+)\.b2b\.test\.com/(.*)$ /company/$1/$2 [L,R]
看看地址栏里是不是重写成功,试好后再把R去掉


我觉得我已经尽可能的讲清楚了。如果你还是看不懂,最好还是找apache的中文文档(国内网站有的是,

你可以去http://man.chinaunix.net看看)好好看看Rewrite的部分吧。

RewriteEngine On
   RewriteRule ^(/image/.*)$ $1 [L]
   RewriteRule ^(/css/.*)$ $1 [L]
   RewriteRule ^(/rte/.*)$ $1 [L]
   RewriteRule ^(/script/.*)$ $1 [L]
   RewriteRule ^(/favicon.ico)$ $1 [L]

   # Access the nbbs context directly.
   RewriteRule ^(/nbbs/.*)$ $1 [L]

   RewriteRule ^/$ /nbbs/index [PT]
   RewriteRule ^/(index)$ /nbbs/index [PT]
    RewriteRule ^/(thread|user|download|admin|threads|recommends|search|error|tag)(.*)$ /nbbs/$1$2   [PT]
    # AJAX URIs:
    RewriteRule ^/(ajax/.*)$ /nbbs/$1 [PT]
    CustomLog logs/mod_jk_log common
    JkLogLevel debug
    JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
    JkWorkersFile conf/workers.properties
    JkMountFile conf/uriworkermap.properties
 

 

2.  把url 动态改成静态
  用URL重写方式 2种

posted on 2007-05-07 00:19 Live-in Java 阅读(2866) 评论(1)  编辑  收藏

评论

# re: 泛域名和URL重写 2014-04-04 00:41 林峰
怎样把wei.1000.cavaye.cn,写成wei.cavaye.cn  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: