日韩精品欧美激情国产一区_中文无码精品一区二区三区在线_岛国毛片AV在线无码不卡_亞洲歐美日韓精品在線_使劲操好爽好粗视频在线播放_日韩一区欧美二区_八戒八戒网影院在线观看神马_亚洲怡红院在线色网_av无码不卡亚洲电影_国产麻豆媒体MDX

Apache中DocumentRoot和Directory的區(qū)別

時(shí)間:2021-04-20 09:11:56 類型:WEB服務(wù)器
字號:    

  在一段Apache配置中往往會(huì)出現(xiàn)一對令人疑惑的值,DocumentRoot和Directory,原因在于它們后面跟了一樣的路徑。

  一.虛擬主機(jī)

  以一段vhost(虛擬主機(jī))的配置為例。該配置由軟件自動(dòng)生成,由于它可以正常運(yùn)行,我們從這里入手。

  
  <VirtualHost *:80>
    DocumentRoot "E:\www\public"     --①
    ServerName www.test.com
    ServerAlias 
  <Directory "E:\www\public">        --②
      Options FollowSymLinks ExecCGI
      AllowOverride All
      Order allow,deny
      Allow from all
      Require all granted
  </Directory>
</VirtualHost>
  

 ?、貲ocumentRoot代表根目錄

  ②代表該目錄的基本屬性

  可以看到的一個(gè)現(xiàn)象是:①②目錄一致,且該路徑下一般都有index.php入口文件。

  二.服務(wù)器配置

  httpd.conf一般用于配置Apache的主體依賴環(huán)境。在其中有一段配置定義:

#
# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other 
# <Directory> blocks below.
#
DocumentRoot  "D:\phpStudy\WWW"
<Directory />
    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order allow,deny
    Allow from all
    Require all granted
</Directory>

  注意到包含關(guān)系,即主體配置中會(huì)包含虛擬主機(jī)標(biāo)簽,可以推測出虛擬主機(jī)的設(shè)置是在全局主體配置的基礎(chǔ)上進(jìn)行增量定義的。

  httpd.apache.org/docs/2.4/mod/core.html#directory

  在Apache的官方文檔中給出了Directory標(biāo)簽的說明:定義該目錄、及子目錄的配置屬性。

  有意思的是各個(gè)屬性配置項(xiàng)的含義,如下:

  

 Options:復(fù)寫選項(xiàng)策略,可選值有Indexes、FollowSymLinks和ExecCGI等。

     分別代表"允許列舉目錄"、"允許Directory路徑定義以外的鏈接文件"、"允許執(zhí)行CGI程序"。

  AllowOverride:復(fù)寫重定向策略

  Order:復(fù)寫可用指令集

  Allow:復(fù)寫可訪問網(wǎng)站的地址集


  三.對比結(jié)論

  實(shí)際上明白各種語法的含義后,至此答案已經(jīng)明了。

  DocumentRoot屬性用于指定了一種URL映射的根目錄路徑。例如http://localhost/

  而Directory標(biāo)簽是為了指定URL路徑在后續(xù)的請求中可以進(jìn)行操作的權(quán)限范圍屬性。

  注意到二的一段黑字,我們將有可能把一的①②路徑寫得不一致,即DocumentRoot為子目錄,Directory為父目錄。

<VirtualHost *:80>
    DocumentRoot "E:\www\public"
    ServerName test.com
    ServerAlias 
  <Directory "E:\www">
      Options -Indexes -FollowSymLinks +ExecCGI
      AllowOverride All
      Order allow,deny
      Allow from all
     Require all granted
  </Directory>
</VirtualHost>

  在此配置文件中指定了不允許列舉目錄、禁止PHP程序訪問Directory路徑定義以外的鏈接文件、允許執(zhí)行CGI程序、對根目錄授予了允許所有訪問都接受的權(quán)限。

  由于根目錄(DocumentRoot)的路徑是目錄訪問定義(Directory)的一個(gè)子目錄,理應(yīng)也能正常運(yùn)行。

  在E:\www\public下新建一個(gè)index.php文件,echo "Hello World"。

  啟動(dòng)httpd.exe后一切正常


<