關於PHP應用中的APACHE的虛擬目錄和虛擬主機相關的設定
阿新 • • 發佈:2018-12-05
背景
有多個網站在同一個apache服務下,由於之前的服務已經部署了,不能大動,可是後來開發的php應用的路徑只能是根目錄,因為所有的頁面開發,程式中的跳轉路徑都是寫的/根目錄下的。怎麼辦呢?靜下心來想想,我這裡有兩個域名,有4個服務三個服務可以在同一個域名下,但是可以是二級目錄,另一個服務有另一個域名。想到這裡
想到nginx可以設定虛擬主機(都在同一個埠下,根據不同的域名區分訪問),也可以設定二級目錄,apache,同樣是web伺服器應該也可以做到相應的情況。想到這裡我們來具體實現吧
前置條件
- apache server
- 多個網站
- 網站可執行檔案路徑分別是
C:\phpStudy\PHPTutorial\WWW\xxx
C:\phpStudy\PHPTutorial\WWW\abc
C:\phpStudy\PHPTutorial\WWW\def
C:\phpStudy\PHPTutorial\WWW\cnn
- 域名 分別是 wodetian.com,www.wodedi.cn
- xxx 對應 wodetian.com ,abc對應www.wodedi.cn/ ,def 對應 www.wodedi.cn/def,cnn 對應 www.wodedi.cn/cnn
配置httpd.conf
首先找到對應 httpd-vhosts.conf的配置,取消#的註釋,也可以複製一行,我的習慣是複製一行,在取消註釋
#Include conf/extra/httpd-vhosts.conf
Include conf/extra/httpd-vhosts.conf
然後設定虛擬主機 ,設定第一個服務xxx到域名wodetian.com
<VirtualHost *:80>
DocumentRoot "C:\phpStudy\PHPTutorial\WWW\xxx"
ServerName wodetian.com
</VirtualHost>
設定第二個主機wodedi 下面的abc為根目錄的應用,設定def為二級目錄,設定cnn也為二級目錄,並且他們的物理路徑也都不一樣
<VirtualHost *:80>
DocumentRoot "C:\phpStudy\PHPTutorial\WWW\abc"
ServerName www.wodedi.cn
Alias /def "C:\phpStudy\PHPTutorial\WWW\def"
Alias /cnn"C:\phpStudy\PHPTutorial\WWW\cnn"
<Directory "C:\phpStudy\PHPTutorial\WWW\abc">
Options -Indexes -FollowSymLinks +ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>
設定完畢後,重啟apache ,一切如此美好,問題解決