背景
有多個網站在同一個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 ,一切如此美好,問題解決