apache“options”指令代码中附加带有“+”号的值与不带有“+”号的值有什么区别?示例代码在正文中

apache“options”指令代码中附加带有“+”号的值与不带有“+”号的值有什么区别?示例代码在正文中

这段代码有什么区别=>

<Directory "C:\xampp\htdocs\coderevenge.com">
    
    options  Indexes FollowSymlinks Includes ExeCGI
    AllowOverride All
    Require all granted
    
    
    </Directory>

此处的代码 =>

<Directory "C:\xampp\htdocs\coderevenge.com">

options  +Indexes +FollowSymlinks +Includes +ExeCGI
AllowOverride All
Require all granted


</Directory>

答案1

https://docstore.mik.ua/orelly/linux/apache/ch03_11.htm


参数前面可以加“+”或“-”,在这种情况下,参数会被添加或删除。例如,以下命令会添加Indexes但会删除ExecCGI

Options +Indexes -ExecCGI

如果没有设置任何选项,也没有指令,则效果就像已设置了 All,这当然意味着未设置 MultiViews。如果设置了任何选项,则 All 将被关闭。这至少有一个奇怪的效果:如果您有一个 ... /htdocs 目录,其中没有 index.html 和一个非常简单的配置文件,并且您访问该站点,则会看到 ... /htdocs 目录。例如:

User Webuser 
Group Webgroup 
ServerName www.butterthlies.com 
DocumentRoot /usr/www/site.ownindex/htdocs 

如果添加以下行:

Options ExecCGI

再次访问它,你会看到以下令人困惑的消息:

FORBIDDEN 
You don't have permission to access / on this server 

原因是,当未提及选项时,默认情况下会将其设置为全部。通过打开 ExecCGI,您可以关闭所有其他选项,包括索引。解决此问题的方法是编辑配置文件,使新行显示为:

Options +ExecCGI 

类似地,如果没有使用“+”或“-”,且多个选项可以应用于一个目录,则采用最后一个最具体的选项。例如:

Options ExecCGI 
Options Indexes 

结果是只设置了索引,这可能会让您感到惊讶。

相关内容