Назад | Перейти на главную страницу

Директива Alias, вероятно, никогда не будет соответствовать, потому что она перекрывает более ранний псевдоним

Хорошо, не знаю, почему это происходит.

Итак, я получил сообщение

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.

но вот первые 15 строк моего /httpd/httpd.conf файл

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

Абсолютно нет Alias or ScriptAlias записи перед строкой 14, которая является Include conf.d/*.conf.

Так что на самом деле впервые Alias запись встречается, фактически находится в awstats.conf файл под /conf.d/*.conf.

Почему тогда я получаю эту ошибку?

Сервер работает, это просто досада.

РЕДАКТИРОВАТЬ: сделал grep Alias ​​на /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

Проще всего понять, что Apache генерирует один файл конфигурации внутри, путем синтаксического анализа основного httpd.conf построчно и включает внешние разделы в местах, где Include или IncludeOptional директива используется, прежде чем перейти к следующей строке.

Когда подстановочные знаки используются в Include пути файловой системы, включаемые в файлы, разбираются в лексикографическом (словарном) порядке, conf.d/alice.conf придет раньше conf.d/bob.conf.

Во многих директивах порядок имеет значение, в некоторых используется последнее вхождение, в других - большая область действия, прежде чем победит меньшая область и т. Д.

Правила для Псевдоним директивы:

Псевдонимы и перенаправления, возникающие в разных контекстах, обрабатываются так же, как и другие директивы, в соответствии с стандартные правила слияния. Но когда несколько псевдонимов или перенаправлений происходят в одном контексте (например, в одном разделе), они обрабатываются в определенном порядке.

Первый, все перенаправления обрабатываются до псевдонимов обрабатываются, поэтому запрос, соответствующий Redirect или RedirectMatch никогда не будут применяться псевдонимы. Во-вторых, псевдонимы и перенаправления обрабатываются в том порядке, в котором они появляются в файлах конфигурации, с первое совпадение имеет приоритет.

По этой причине, когда две или более из этих директив применяются к одному и тому же подпутью, вы должны сначала указать наиболее конкретный путь, чтобы все директивы имели эффект. Например, следующая конфигурация будет работать должным образом:

Alias /foo/bar /baz 
Alias /foo /gaq 

Но если бы указанные выше две директивы были поменяны местами, /foo Псевдоним всегда будет соответствовать до /foo/bar Псевдоним, поэтому последняя директива будет проигнорирована.

Для устранения неполадок хороший первый старт в вашем случае - это простой grep -E "Alias|Redirect" conf.d/*.conf

У меня была аналогичная ошибка из-за неправильной конфигурации хоста. Чтобы решить эту проблему, просто добавьте:

<VirtualHost *:80>
Here Host Configuration
</VirtualHost>

Проверьте настройку vhost. В моем случае ошибка вызвала неправильную конфигурацию виртуального хоста. Выглядело это так: /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>