天天看點

關于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.com,www.wodedi.cn
  2. 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 ,一切如此美好,問題解決