關於二級域名和網站子目錄之間的關系和聯系相信很多朋友都知道了的.作為與主站關系不是很大的子分類來說, 比如bbs.domainname.com, news.domainname.com之類還是需要使用二級域名的. 由於apachhe2不同於以往的apache版本, 有一些配置文件已經分散放在各個不同的文件里了, 所以如果還是根據網絡的舊資料來配置文件的話會帶來很大困惑, 其實新版的apache2最大的優點就是采用了結構更好的架構, 當然在配置虛擬主機的過程還是和舊版本的有一些差別的. 下面就用Apache2配置虛擬主機的二級域名來做下說明, 附帶說明一下我的環境, 我是在VMware下配置的LAMP環境, 我的apache2 路徑在/etc/apache2/, 網站根目錄: /var/www/, 如果你采用的是一鍵安裝版的話,一般都是裝在/usr/local/etc/apache2/, 網站的根目錄在/usr/local/www這個在配置過程中要注意一下. 下面進入正題
關於虛擬主機下同IP多域名虛擬主機的問題請參考我的另一篇文章. 由於在進行二級域名的配置過程中要用到mod_rewrite模塊的支持, 需要先開啟mod_rewrite模塊, 請參考我轉的一篇文章, apache2服務器mod_rewrite模塊 開啟方法. 要做二級域名的解析, 首先要做的是你最好有一個頂級域名, 如果你還沒有申請到頂級域名, 就按照我的例子在本地以phpwindtest.com為例進行介紹, 要添加的域名是bbs.phpwindtest.com, 其他的如news.phpwindtest.com都類似設置. 這樣的話可以讓你自由地本地進行安裝測試各種的網站,論壇,博客等, 待測試完成后再解析到外網上. 大致的情況就介紹到這里, 打開服務器端的apache2 的配置文件httpd.conf, 要注意, 如果你在其他的網站看到的這個資料時, 會發現它們會介紹這個文件有很多的內容, 那主要是基於apache來講的, 對於apache2來說, 它的內容很簡單, 一般就是ServerName localhost這一個字符, 其他的啥都沒有. 更別提有什么mod_rewrite模塊了, 如下圖:
實際上Apache2的配置文件是和它同等的目錄下的apache2.conf, 也即是/etc/apache2/apache2.conf,
RewriteEngine on
RewriteMap lowercase int:tolower #特別注意: 現在網絡有很多轉貼中這個lowercase被空格了, 變成:lower case, 初步分析, 這個是由於他們在轉貼時使用了轉貼工具導致的錯誤, 但是對於學習者來說卻是莫大的影響, 在此提請轉貼的朋友, 一定要小心在意.
RewriteMap vhost txt:/etc/apache2/vhost.map
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/$1
如圖:
在這里要強調的是, 你一定要根據你自己的apache2實際情況來自己配置, 注意點見上面的介紹. 然后,在/etc/apache2/新建一個文件vhost.map, 輸入如下的內容:
完成后保存,注意兩點, 一點是域名和文件夾之間有空格, 另一點是要用根路徑. 最后, 在對應的文件夾內建立對應的目錄. 通過這種操作,可以創建無限個二級域名網站, 如news.phpwindtest.com, product.phpwindtest.com等. 設置完成后,保存退出即可.
通過瀏覽器訪問我們的網站,www.phpwindtest.com, 它訪問的對應目錄是/var/www/neiwang/phpup, 訪問bbs.phpwindtest.com時, 它訪問對應的目錄是/var/www/neiwang/phpup/bbs, 其他依次類推. 至此, 對於一般的直接放到外網的網站來講, 二級域名設置完成. 但是針對本地測試的網站, 總不可能你一直使用IP地址訪問吧? 如果能和訪問外網的方式來訪問本地站的話會更好. 這一點也可以做得到, 不過你要修改一下實體機的HOSTS表. HOSTS表的作用可以參考其他的網絡資料.這里只作簡要的設置說明.
XP系統的HOSTS表的路徑:C:\WINDOWS\system32\drivers\etc, 編輯里面的內容. 添加如下的內容:
192.168.21.102 www.phpwindtest.com #說明:192.168.21.102 這個是我ubuntu的IP地址, www.phpwindtest.com虛擬的測試域名, 完成后保存.
192.168.21.102 bbs.phpwindtest.com #說明:192.168.21.102 這個是我ubuntu的IP地址, bbs.phpwindtest.com虛擬的測試域名, 完成后保存.
如圖示:
即使通過這樣的設置, 也不會如你預期那樣可以通過二級域名訪問到對應的文件夾內的內容, 如本例的/var/www/neiwang/phpup/bbs, 你還要在apache2服務器內再配置一個獨立於主域名的配置文件, 這個文件可以直接從該主域名的文件內進行COPY, 其路徑是在/etc/apache2/sites-available/下, 然后再適當編輯一下它的ServerName, DocumentRoot之類的參數, 為了方便起見, 可以直接使用主配置文件的ErrorLog, CustomLog, 如圖示:
然后再將該配置文件鏈到sites-enabled/文件夾下, 可以使用軟鏈接(ln -s),也可以COPY命令, 使用軟鏈接的好處是當你源文件更新時, 軟鏈接的文件也立即更新, 通俗理解, 軟鏈接就是WIN系統下的快捷方式. 然后, 也可以用a2ensite sitesname(配置文件名稱),即:
#a2ensite sitesname
這樣的話, 也可以建立更新的鏈接
然后重啟apache2:
#/etc/init.d/apache2 restart
#service apache2 restart #建議使用這個命令
然后通過瀏覽器鍵入域名:www.phpwindtest.com進行訪問,可以看到頂級域名的信息, 通過bbs.phpwindtest.com 就可得到對應文件夾的文件了.
頂級域名效果:
二級域名效果:
至此二級域名的設置完全解決. 再延伸一步, 這是一個虛擬主機, 那么第二個,第三個,乃至更多的虛擬主機能不能這樣設置呢? 答案是肯定的, 依照此方法, wwufengg已經完成多個虛擬主機架設二級域名的工作.
特別需要注意的是: 上面的phpwindtest.com實質上是在本地測試完成的, 並不是在外網上可以正常訪問的, 這樣做只是為了測試方便而已, 如果你已經申請了域名,就特別要注意, 要在DNS服務器上把二級域名給設置好才行. 把二級域名對應的的主機空間定義一下, 我就是沒有注意到這一點, 在部署外部的二級域名時繞了很大的彎路, 悲摧(一般都是和頂級域名的IP地址一樣的, 注意www.abc.com之類的也是二級域名哦, 真正的頂級域名是:abc.com, 這個要注意一下. )
N久之后我再重新配置時又遇到了上面黑體字的誤區, 也就是: 要在DNS服務器上把二級域名給設置好才行. 把二級域名對應的的主機空間定義一下
source: http://www.cnblogs.com/wwufengg/archive/2013/01/31/apache2-config-domain.html