В значении по умолчанию 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
.
Примечание читателям: прочитайте комментарии Henning Kockerbeck. Apache 2.4 виртуальная функциональность хостов хорошо описан в официальное руководство . Следующий ответ устарел.
лучшее объяснение, почему процедура работает, следующее (от документация ):
, Когда запрос прибудет, сервер найдет лучший (самый определенный) аргумент соответствия на основе IP-адреса и порта используемым запросом. Если будет больше чем один виртуальный хост, содержащий этот адрес лучшего соответствия и комбинацию портов, то Apache далее сравнит директивы ServerName и ServerAlias с именем сервера, существующим в запросе.
<час>, Если Вы не отключили сайт по умолчанию
000-default
, Вы теперь имеете два <VirtualHost *>
объявления и значение по умолчанию, каждый не основан на имени. Apache не может различать их, и для решения неоднозначности, это просто проигнорирует второй. Можно продолжить двигаться тремя различными способами: 000-default.conf
, некомментария ServerName
директива и присвоения другого имени к нему.