Luc*_*c M 2 httpd.conf apache-2.2
进入原来的httpd.conf,我有
Options Indexes FollowSymLinks
Run Code Online (Sandbox Code Playgroud)
我在 /etc/httpd/conf.d/ 中创建了一个配置文件
NameVirtualHost 192.168.0.2:8009
<VirtualHost 192.168.0.2:8009>
DocumentRoot /var/www/html/deve
ServerName "deve:8009"
ErrorLog /var/www/deve_errorlog
CustomLog /var/www/deve_customlog common
Options -ExecCGI -Indexes
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
我重新启动服务器,我仍然可以看到文件
http://192.168.0.2:8009/images
Run Code Online (Sandbox Code Playgroud)
我认为更具体的规则高于一般规则
我在哪里错过了什么?
您基本上是正确的,但是在选项的使用中遗漏了一个微妙之处。
但是,首先,不要只是将它们粘贴在 NameVirtualHost 容器中,而是使用目录语句...
您是正确的,最具体的那些适用,但是,如果选项语句包含一个选项列表,其中每个选项都以 + 或 - 为前缀,那么这些选项将与任何现有选项合并...
这意味着
Options Indexes FollowSymLinks
Run Code Online (Sandbox Code Playgroud)
与
Options -ExecCGI -Indexes
Run Code Online (Sandbox Code Playgroud)
来形成
Options Indexes FollowSymLinks -ExecCGI
Run Code Online (Sandbox Code Playgroud)
看看 apache 文档http://httpd.apache.org/docs/2.2/mod/core.html
特别是在示例中:
...如果第二个 Options 指令使用 + 和 - 符号:
<Directory /web/docs>
Options Indexes FollowSymLinks
</Directory>
<Directory /web/docs/spec>
Options +Includes -Indexes
</Directory>
Run Code Online (Sandbox Code Playgroud)
然后为
/web/docs/spec
目录设置选项 FollowSymLinks 和 Includes 。
因此,Apache 在您的配置中表现出的行为是正确的。
我只是明确声明 NameVirtualHost 的选项如下:
<Directory /var/www/html/deve>
Options +FollowSymlinks -Indexes -ExecCGI
</Directory>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4141 次 |
最近记录: |