昨天弄了個PHP小程式,想在本地跑一下測試,可是工作電腦沒有安裝環境,于是下載下傳了一個wamp,一路暢通,Apache、Mysql、PHP就 全有了。啟動wamp服務,在浏覽器裡輸入“http://localhost”,通路正常,跳出wamp首頁。于是,下面想把自己的 CrashServer網站配置到Apache裡,可以通過虛拟域名在本地通路測試,結果遇到不少問題,今日一通Google研究,終于任督二脈全通。
1、首先,Apache的配置檔案是httpd.conf和httpd-vhosts.conf,我們先來看下wamp安裝好後,httpd.conf的預設配置。

# Virtual hosts
#Include conf/extra/httpd-vhosts.conf

要想通過虛拟域名通路網站,就需要配置一下httpd-vhosts.conf。那麼需要啟動httpd-vhosts.conf,因為預設是關閉的,是以把配置檔案中#Include conf/extra/httpd-vhosts.conf前面的#去掉。于是httpd-vhosts.conf啟用了,那麼我們去編輯httpd-vhosts.conf這個檔案。
2、httpd-vhosts.conf檔案的位置,在apache目錄下的conf/extra,上面的Include conf/extra/httpd-vhosts.conf其實已經告訴了你它的位置。
在這個檔案中,添加配置我上面的CrashServer網站:
首先,我的CrashServer是放在wamp/www下面的,這是wamp預設的網站目錄,其次,我想在本地測試的時候,用crash.com就能通路到CrashServer,于是配置如上。
在這裡,為了讓我們能通過crash.com通路本地站點,是以需要修改hosts檔案,添加 127.0.0.1 crash.com。
到這裡,配置完畢了,于是重新開機Apache,輸入crash.com通路,結果正常通路。但是,當以localhost通路時,原來出現的是wamp的首頁,現在卻顯示CrashServer了,于是還要在hosts裡追加 127.0.0.1 localhost,在httpd-vhosts.conf中,追加上localhost的站點配置,現在看起來就是這樣了:


OK,到此基本可以結束了,網站都配置好了,看起來非常非常的簡單。但是對于我卻不是這樣的,我昨天碰到了如下問題。
首先,我的CrashServer一開始不是放在wamp/www下的,而是放在E:\360Downloads下面的,于是就有了如下配置:
這沒錯吧,路徑都對,虛拟域名也對,可是通路的時候,卻提示403 Forbidden,沒有權限。于是Google,哦,知道了原來是要給CrashServer目錄加上權限,于是修改配置如下:


重新開機Apache,通路正常了。首先,新增的Directory,是可以在httpd.conf中添加的,也可以在httpd-vhosts.conf中添加,我認為在後者裡面添加更好,配置内容更加清晰明了,項目目錄權限跟随着項目站點配置。在上面新增的Directory中,我們給了360Downloads下的CrashServer目錄加了權限,允許通路了,是以就不再提示403 Forbidden了。
這個問題,現在寫起來是這麼的簡單輕松,可問題出現的時候,卻很讓人困擾和郁悶。對于項目在wamp/www之外的,需要給項目目錄權限才可,注意:
這三條缺一不可,這是配置了允許外部計算機通路伺服器站點。
3、今天問題解決後,想到通過同一區域網路下的其他裝置通路我的站點,于是用手機,在浏覽器中輸入我的電腦的ip,不能通路,再次Google,原來需要修改在httpd.conf中的配置:
其中,Require local,沒Google出來,但看名字知道,是隻允許本地通路,于是改成Require all granted,允許所有請求通路,手機就可以通路了。
參考,http://roteg.iteye.com/blog/1465380,這裡是通路驗證配置的解釋。
這裡,有篇老外寫的配置博文,很好,https://www.kristengrote.com/blog/articles/how-to-set-up-virtual-hosts-using-wamp#wamp-step-7,但是唯獨一點,在他的Step 7的時候,給項目目錄添權重限:
卻恰恰少了Require all granted,導緻最後還是403 Forbidden,Require all granted這是2.4上邊才需要的,2.2不需要。
這就可以了解了為什麼Google出來的技術文章,有些提到require all granted,而有些則沒有。
此配置是在如下wamp環境進行的:
至此,在Apache下配置PHP站點,全部完成。