|
先前寫過一篇通用的動態(tài)域名解析:http://blog./blog/html/do-showone-tid-341.html 那個相對簡單一些,另外還有一種更常見的情況就是二級域名動態(tài)解析,這在一些個人主頁系統(tǒng)、博客系統(tǒng)中的應(yīng)用非常常見。 關(guān)于動態(tài)解析的,在無前那篇文章中基本上講過了,不想再重復(fù)了,另外有關(guān)Apache的Rewrite大家最還是看Apache的官方文檔,這里只想說說實例。 實現(xiàn)動態(tài)二級域名解析的一個關(guān)鍵就是,把特有的名字怎么能夠提出來,因為RewriteRule中的匹配,是不包括域名的匹配的,其實這其中就是一層窗戶紙,把域名先重寫放到“路徑”中,再對“路徑”重寫一次就可以了,也就是說加一步過渡。這樣說大概還一頭霧水,給個實例。 首先按我上次寫的文章的那個需求寫一個,假設(shè)動態(tài)解析*.。 注意要先做一個所謂的范域名解析,就是說把所有*.解析到某個IP上去,這不是本文章討論范圍就不細(xì)說了。 Apache中相關(guān)配置如下: <VirtualHost _default_:80> ServerAdmin yourmail@domain.com DocumentRoot /YourWwwRoot/.default ServerName all-sites ErrorLog logs/all-sites-error_log CustomLog logs/all-sites-access_log common # 下面三行實現(xiàn)動態(tài)解析 RewriteCond %{HTTP_HOST} ^[a-z0-9\-]+\.iecn\.cn$ RewriteRule ^/(.*)$ /%{SERVER_NAME}/$1 ##注## RewriteRule ^/([a-z0-9\-]+)\.iecn\.cn/(.*)$ /YourWwwRoot/$1/$2 [L] # 沒有解析到的情況下扔到自己的一個PHP中做一下處理 RewriteRule ^.*$ /index.php [L] </VirtualHost> 注意我標(biāo)注的地方,那一步就是一個過渡,說一下過程吧,假設(shè)現(xiàn)在訪問: http://zhong./xxx 經(jīng)第一步重寫,變成 /zhong./xxx 經(jīng)第二步重寫就是 /YourWwwRoot/zhong/xxx 了,其他的操作與我行前說的基本就差不多了。 再舉一個可能更常見的實例,假設(shè)一個博客系統(tǒng),要求把 http://xxx. 隱式的重寫成 http://blog./blog.php?u=xxx 這里面的xxx可以看做是一個用戶名,想必類似這樣的需求大家一定都見過很多了,不過多解釋了。 同意先做范域名解析這里不多說。在Apache中做如下重寫(只寫Rewrite部分了): RewriteCond %{HTTP_HOST} ^[a-z0-9\-]+\.iecn\.cn$ RewriteRule ^/?$ /%{HTTP_HOST} RewriteRule ^/([a-z0-9\-]+)\.iecn\.cn/?$ /blog.php?u=$1 [L] |
|
|