1. 程式人生 > >配置Apache的二級域名支援

配置Apache的二級域名支援

首先,你的擁有一個有泛域名解析的頂級域名,例如: domain.com其次,在 httpd.conf 中開啟 mod_rewrite之後,在 httpd.conf 的最後,新增以下內容: 

RewriteEngine on 
RewriteMap lowercase 
int:tolower 
RewriteMap vhost txt:
/usr/local/etc/apache/vhost.map 
RewriteCond ${lowercase:
%{SERVER_NAME}} ^(.+)$ 
RewriteCond ${vhost:
%1^(/.*)$ 
RewriteRule 
^/(.*)$ %1/$1 


其中的 
/usr/local/etc/apache 是你的 apache 伺服器配置檔案所在路徑,根據實際情況更改。 
然後,在這個所在路徑的目錄下建立一個檔案: vhost.map 
內容為: 

www.domain.com 
/usr/local/www/data-dist/domain 
bbs.domain.com 
/usr/local/www/data-dist/bbs 
anyname.domain.com 
/usr/local/www/data-dist/anyname 

以上部分都是:” 域名
+空格+絕對路徑” 的形式。 

最後,在你的網站根目錄 
/usr/local/www/data-dist 下,建立對應目錄: 
domain , bbs , anyname 等等,理論上可以無限。 

這樣,通過瀏覽器,訪問 www.domain.com 時,實際上訪問的就是 
/usr/local/www/data-dist/domain目錄下的檔案。同理,訪問 bbs.domain.com 實際上訪問的就是 /usr/local/www/data-dist/bbs 目錄下的檔案。而且,你可以 
隨時更改 vhost.map 來增加、刪除、修改你的二級域名和所指向的實際路徑,不用重啟 apache。 

第一步:開啟apache的配置檔案httpd.conf,去掉LoadModule rewrite_module modules
/mod_rewrite.so前面的#號。 
第二步:打配置檔案尾部加上 
RewriteEngine on 
RewriteMap lowercase 
int:tolower 
#定義映像檔案 
RewriteMap vhost txt:
/apache/vhost/vhost.map 
#處理變名 
RewriteCond 
%{REQUEST_URI} !^/icons/ 
RewriteCond 
%{REQUEST_URI} !^/cgi-bin/ 
RewriteCond ${lowercase:
%{SERVER_NAME}} ^(.+)$ 
這裡做基於檔案的重新對映 
RewriteCond ${vhost:
%1^(/.*)$ 
RewriteRule 
^/(.*)$ %1/$1 
RewriteCond 
%{REQUEST_URI} ^/cgi-bin/ 
RewriteCond ${lowercase:
%{SERVER_NAME}} ^(.+)$ 
RewriteCond ${vhost:
%1^(/.*)$ 
RewriteRule 
^/(.*)$ %1/cgi-bin/$1 

注意:vhost.map檔案是域名和空間映像的檔案,格式如下:  
www.abc.com 
/vhostusr/www.abc.com 
www.xyz.com 
/vhostuser/www.xyz.com 
www.cccbbbb.net 
/vhostuser/www.ccbbbb.net 
www.cncms.com.cn 
/vhostuser/www.cncms.com.cn




(你不會連
/vhostuser/www.abc.com目錄也沒建吧,會報錯的喲) 
第三步:儲存配置檔案,重啟apache。在開設可繫結域名的空間時,只要在vhost.map檔案裡新增相應記錄,並建立相應資料夾就OK了~~~ 
其實這個可以用php指令碼來完成的,很簡單的~~呵呵~~~ 
注意啊:php_admin_value open_basedir “path,這個選項要配好啊~~新手如果不懂的,就不要動這個了~ 
============================================== 
方法二、 


rewriteengine on 
rewritecond 
%{HTTP_HOST} [^.]+\.域名\.com$ 
rewriterule 
^(.+%{HTTP_HOST}$1 [C] 
rewriterule ([
^.]+)\.域名\.com(.*/$1$2 
其他配置檔案 

接著在DNS中開設一個泛解析到對應的IP地址。 
就可以實現下面的方案。 

域名:domain.com 
絕對路徑:
/home/domain.com/ 
www.domain.com 自動解析到 
/home/domain.com/www/ 
abc.domain.com 自動解析到 
/home/domain.com/abc/ 
等等子域名都可以自動解析到 
/home/domains.com/對應子域名名稱的資料夾 
直接建立子域名名稱的資料夾即可使用。不需重啟apache。