Псевдоним Apache2 проигнорировал: “Файл не существует” несмотря ни на какую запаздывающую наклонную черту и переписывает, включил

В значении по умолчанию Ubuntu 2016.04's Apache2 я пытался добавить виртуальный хост с псевдонимом:

sudo mkdir /var/www/simplesamlphp
echo "Hello" > /var/www/simplesamlphp/index.html (as root)
sudo chown -R www-data:www-data /var/www/simplesamlphp
sudo chmod -R 755 /var/www

Во-вторых, я создал /etc/apache2/sites-available/simplesamlphp.conf:

<VirtualHost *>
    ServerName simplesamlphp
    DocumentRoot /var/www/simplesamlphp

    SetEnv SIMPLESAMLPHP_CONFIG_DIR /var/simplesamlphp/config

    Alias /simplesaml /var/simplesamlphp/www

    <Directory /var/simplesamlphp/www>
        <IfModule !mod_authz_core.c>
        # For Apache 2.2:
        Order allow,deny
        Allow from all
        </IfModule>
        <IfModule mod_authz_core.c>
        # For Apache 2.4:
        Require all granted
        </IfModule>
    </Directory>
</VirtualHost>

В-третьих, я добавил эту строку к /etc/hosts:

127.0.0.1       simplesamlphp

В-четвертых, я работал:

sudo a2enmod rewrite
sudo a2ensite simplesamlphp.conf
sudo service apache2 restart

ПРОБЛЕМА: доступ http://simplesamlphp/simplesaml дает The requested URL /simplesaml was not found on this server и следующее появляется в /var/log/apache2/error.log:

AH00128: File does not exist: /var/www/html/simplesaml

Что я делал неправильно?
Между прочим, я следую этим инструкциям. На самом деле я не уверен, почему DocumentRoot необходим несмотря на весь веб-контент, находящийся в /var/simplesamlphp/www.

0
задан 25 November 2016 в 18:04

1 ответ

Примечание читателям: прочитайте комментарии Henning Kockerbeck. Apache 2.4 виртуальная функциональность хостов хорошо описан в официальное руководство . Следующий ответ устарел.

лучшее объяснение, почему процедура работает, следующее (от документация ):

, Когда запрос прибудет, сервер найдет лучший (самый определенный) аргумент соответствия на основе IP-адреса и порта используемым запросом. Если будет больше чем один виртуальный хост, содержащий этот адрес лучшего соответствия и комбинацию портов, то Apache далее сравнит директивы ServerName и ServerAlias с именем сервера, существующим в запросе.

<час>, Если Вы не отключили сайт по умолчанию 000-default, Вы теперь имеете два <VirtualHost *> объявления и значение по умолчанию, каждый не основан на имени. Apache не может различать их, и для решения неоднозначности, это просто проигнорирует второй. Можно продолжить двигаться тремя различными способами:
  • можно принять решение отключить сайт по умолчанию, или
  • можно принять решение заставить новый виртуальный хост послушать на другом порте, или
  • можно принять решение преобразовать сайт по умолчанию в основанный на имени виртуальный хост путем редактирования 000-default.conf, некомментария ServerName директива и присвоения другого имени к нему.
1
ответ дан 28 September 2019 в 03:02

Другие вопросы по тегам:

Похожие вопросы: