目录是相对于本地服务器路径还是公共URL路径?

时间:2018-02-13 12:36:12

标签: apache apache2 apache2.4

我知道DocumentRoot指的是服务器的本地路径(在磁盘上),即带有

<VirtualHost :80>
ServerName example.com
DocumentRoot /home/www/mysite1/

浏览http://example.com/foo/index.html将访问服务器上的/home/www/mysite1/foo/index.html

然后,我应该使用(有时似乎有效):

<Directory "/">
Require all granted
</Directory>

(引用/是不是很奇怪,即服务器文件系统的根目录?)

或者我应该将DocumentRoot复制/粘贴到Directory中,如下所示:

DocumentRoot /home/www/mysite1/
<Directory "/home/www/mysite1/">
Require all granted
</Directory>

如果是这样,每次我们修改Directory时都必须复制/粘贴到DocumentRoot这很烦人,为什么需要配置路径重复?在没有复制路径的情况下,是否有办法为所有说Require all granted

2 个答案:

答案 0 :(得分:1)

请参阅Apache手册中的Configuration Sections

实际上,

<Directory>确实是指文件系统路径。

您可以使用<Location>指定整个网站的规则,与文件系统上的位置无关。

答案 1 :(得分:0)

我使用了这个设置

<VirtualHost *:80>
    ServerName seminarium.loc
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/seminarium.loc/public

    <Directory /var/www/seminarium.loc/public>
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
    </Directory>

   ErrorLog /var/www/seminarium.loc/error.log
   CustomLog /var/www/seminarium.loc/access.log combined
</VirtualHost>

目录中的路径指定将应用选项的目录。排除可能的冲突是很自然的,最好指定DocumentRoot的路径,好像有几个站点有&#34; /&#34;他们会互相覆盖选项