1. 程式人生 > >關於PHP應用中的APACHE的虛擬目錄和虛擬主機相關的設定

關於PHP應用中的APACHE的虛擬目錄和虛擬主機相關的設定

背景

有多個網站在同一個apache服務下,由於之前的服務已經部署了,不能大動,可是後來開發的php應用的路徑只能是根目錄,因為所有的頁面開發,程式中的跳轉路徑都是寫的/根目錄下的。怎麼辦呢?靜下心來想想,我這裡有兩個域名,有4個服務三個服務可以在同一個域名下,但是可以是二級目錄,另一個服務有另一個域名。想到這裡
想到nginx可以設定虛擬主機(都在同一個埠下,根據不同的域名區分訪問),也可以設定二級目錄,apache,同樣是web伺服器應該也可以做到相應的情況。想到這裡我們來具體實現吧

前置條件

  1. apache server
  2. 多個網站
  3. 網站可執行檔案路徑分別是
C:\phpStudy\PHPTutorial\WWW\xxx
C:\phpStudy\PHPTutorial\WWW\abc
C:\phpStudy\PHPTutorial\WWW\def
C:\phpStudy\PHPTutorial\WWW\cnn
  1. 域名 分別是 wodetian.comwww.wodedi.cn
  2. xxx 對應 wodetian.comabc對應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 ,一切如此美好,問題解決