好的,不确定为什么会发生这种情况。
因此,我收到了消息
The Alias directive in /etc/httpd/conf.d/awstats.conf at line 3 will probably never match because it overlaps an earlier Alias.
和
The Alias directive in /etc/httpd/conf.d/welcome.conf at line 18 will probably never match because it overlaps an earlier Alias.
/httpd/httpd.conf
但这是我的文件的前 15 行
ServerSignature Off
ServerTokens Prod
ServerRoot "/etc/httpd"
Listen *:80
Listen *:443
User apache
Group apache
ServerAdmin hostmaster@localhost
ServerName 192.168.1.200:80
Include conf.d/*.conf <- THIS IS WHERE INCLUDES BEGIN
Include conf.modules.d/*.conf
第 14 行之前绝对没有任何Alias or ScriptAlias
条目,即Include conf.d/*.conf
。
因此,实际上,第一次Alias
遇到的条目实际上是在awstats.conf
下的文件中/conf.d/*.conf
。
那么为什么我会收到这个错误呢?
服务器运行,只是有点烦人。
编辑:执行了 grep Alias on/etc/httpd/conf.d/*.conf
并且结果如下 ->
/etc/httpd/conf.d/awstats.conf:Alias /awstatsclasses "/usr/share/awstats/wwwroot/classes/"
/etc/httpd/conf.d/awstats.conf:Alias /awstatscss "/usr/share/awstats/wwwroot/css/"
/etc/httpd/conf.d/awstats.conf:Alias /awstatsicons "/usr/share/awstats/wwwroot/icon/"
/etc/httpd/conf.d/awstats.conf:ScriptAlias /awstats/ "/usr/share/awstats/wwwroot/cgi-bin/"
/etc/httpd/conf.d/welcome.conf:Alias /.noindex.html /usr/share/httpd/noindex/index.html
/etc/httpd/conf.d/welcome.conf:Alias /noindex/css/bootstrap.min.css /usr/share/httpd/noindex/css/bootstrap.min.css
/etc/httpd/conf.d/welcome.conf:Alias /noindex/css/open-sans.css /usr/share/httpd/noindex/css/open-sans.css
/etc/httpd/conf.d/welcome.conf:Alias /images/apache_pb.gif /usr/share/httpd/noindex/images/apache_pb.gif
/etc/httpd/conf.d/welcome.conf:Alias /images/poweredby.png /usr/share/httpd/noindex/images/poweredby.png
答案1
最容易理解的是,Apache 通过逐行解析主 httpd.conf 在内部生成单个配置文件,并在Include
或者IncludeOptional
指令被使用,然后继续下一行。
当在文件系统路径中使用通配符时,Include
包含内容将按字典顺序进行解析,conf.d/alice.conf
并将出现在之前conf.d/bob.conf
。
对于许多指令来说,顺序很重要,对于某些指令,会使用最后出现的指令,对于其他指令,会先使用范围较大的指令,然后使用范围较小的指令,等等。
规则别名指令包括:
在不同上下文中发生的别名和重定向将像其他指令一样按照标准合并规则。但是,当多个别名或重定向出现在相同上下文中(例如,在相同部分中)时,它们将按照特定顺序进行处理。
第一的,所有重定向都在别名之前处理
Redirect
被处理,因此与或匹配的请求RedirectMatch
永远不会应用别名。其次,别名和重定向按照它们在配置文件中出现的顺序进行处理, 第一个匹配项优先。因此,当两个或多个指令应用于同一子路径时,必须首先列出最具体的路径,以便所有指令都能生效。例如,以下配置将按预期工作:
Alias /foo/bar /baz Alias /foo /gaq
但是如果将上述两个指令的顺序颠倒过来,Alias
/foo
总是会在/foo/bar
Alias 之前匹配,因此后一个指令将被忽略。
对于您的情况进行故障排除的良好开端是简单的grep -E "Alias|Redirect" conf.d/*.conf
答案2
由于主机配置不正确,我遇到了类似的错误。要解决此问题,只需添加:
<VirtualHost *:80>
Here Host Configuration
</VirtualHost>
检查配置虚拟主机。在我的情况下,错误导致虚拟主机配置错误。它看起来像这样:/etc/apache2/sites-available/hitman.conf
ServerAdmin marek@localhost
ServerName hitman
DocumentRoot /home/marek/public_html/hitman
正确的配置:
<VirtualHost *:80>
ServerAdmin marek@localhost
ServerName hitman
DocumentRoot /home/marek/public_html/hitman
</VirtualHost>