泛域名和URL重寫

火星人 @ 2014-03-03 , reply:0


泛域名和URL重寫

泛域名和URL重寫


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} ^+\.iecn\.cn$
RewriteRule ^/?$ /%{HTTP_HOST}
RewriteRule ^/(+)\.iecn\.cn/?$ /blog.php?u=$1

# 下面三行實現動態解析
RewriteCond %{HTTP_HOST} ^+\.iecn\.cn$
RewriteRule ^/(.*)$ /%{SERVER_NAME}/$1 ##注##
RewriteRule ^/(+)\.iecn\.cn/(.*)$ /YourWwwRoot/$1/$2

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
我想讓地址欄顯示為 xxx.b2b.test.com,而不是http://b2b.test.com/company/xxx,該怎樣寫呀?
在下先謝謝了
有兩點:
首先,RewriteRule的「R」標識符的意思就是顯式的重定向URL,就是說對瀏覽器來講是一次重新的請求,這
樣顯然地址欄里顯示的是新的址址;
其次,在RewriteRule中,一旦域名發生了變化,即便沒有用「R」標識符,也會顯式的重定向URL。
最後還有一點,你的寫法本來就是錯誤的,$1、$2,匹配的是RewriteRule里的匹配,而不是RewriteCond
里的。
你的這種情況應該寫成:
RewriteCond %{HTTP_HOST} ^(+)\.b2b\.test\.com$
RewriteCond %{HTTP_HOST} !^(www|bbs)\.b2b\.test\.com$
RewriteRule (.*) /%{HTTP_HOST}/$2
RewriteRule /(+)\.b2b\.test\.com/(.*)$ /company/$1/$2
以上就是分兩步,把域名中你需要的一個名字提取出來,這種情況只能這樣寫,同時如果想實現你所說的
地址欄上看起來沒變,在重寫中不能出現http,這樣就要求你所有轉向的域名都要解析到這個伺服器下。
如果你用的是apache的NameVirtualHost,你可以把這一組放到第一組,這樣當沒有域名匹配時,默認就是
第一組。如果做不到這一點,就意味著你要在ServerAlias放所有用到的域名了。

謝謝這位高手,小弟愚昧
RewriteRule (.*) /%{HTTP_HOST}/$2
這句甚末意思呀?$2表示的是甚末?
RewriteRule /(+)\.b2b\.test\.com/(.*)$ /company/$1/$2
指定到那個目錄了?
我打算實現的是把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} ^(+)\.b2b\.test\.com$
2: RewriteCond %{HTTP_HOST} !^(www|bbs)\.b2b\.test\.com$
3: RewriteRule (.*) /%{HTTP_HOST}/$1
4: RewriteRule /(+)\.b2b\.test\.com/(.*)$ /company/$1/$2
假設現在訪問 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 /(+)\.b2b\.test\.com/(.*)$ /company/$1/$2
看看地址欄里是不是重寫成功,試好后再把R去掉

我覺得我已經儘可能的講清楚了。如果你還是看不懂,最好還是找apache的中文文檔(國內網站有的是,
你可以去http://man.chinaunix.net看看)好好看看Rewrite的部分吧。
RewriteEngine On
   RewriteRule ^(/image/.*)$ $1
   RewriteRule ^(/css/.*)$ $1
   RewriteRule ^(/rte/.*)$ $1
   RewriteRule ^(/script/.*)$ $1
   RewriteRule ^(/favicon.ico)$ $1

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

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

來源: http://www.iocblog.net/blog/site/apache-rewrite-all.html
《解決方案》

走一走,瞧一瞧,進來···頂一下



[火星人 via ] 泛域名和URL重寫已經有80次圍觀

http://www.coctec.com/docs/service/show-post-1860.html