Итак, я создал очень простой сайт, содержащий только index.html с текстом «welcome». виртуальный хост этого сайта выглядит следующим образом:
ServerAdmin email@email.com
ServerName name.com
ServerAlias www.name.com
DocumentRoot /var/www/name.com/public_html
Это работает отлично. Затем я создаю другой сайт, который я хочу быть www1.name.com с текстом www1.
Я делаю практически то же самое, я создаю папку /var/www1/name.com/public_html с index.html, в ней копирую предыдущую файл и измените его
ServerAlias www1.name.com
DocumentRoot /var/www1/name.com/public_html
, но при переходе на www1.name.com я получаю текст «Добро пожаловать», а не «www1». Может ли кто-нибудь помочь мне в этом?
И да, я всегда делаю a2ensite/a2dissite и service apache2 restart
Уточнение нескольких базовых точек:
В Ubuntu /var/www - это каталог по умолчанию, в котором должен храниться веб-контент пользователя. Это определено в глобальном файле конфигурации Apache: /etc/apache2/apache2.conf, по директивам:<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Прямой связи между именем VirtualHost и его именем DocumentRoot нет прямой связи. Директива ServerName определяет имя общего сервера или имя определенного VirtualHost, когда оно помещается в его определение, - между тегами <VirtualHost>. В целях эффективного управления VH, как правило, определение каждого отдельного VirtualHost помещается в отдельный файл конфигурации. Директива ServerName требуется для каждого VirtualHost. Директива ServerAlias не требуется. Мы можем думать об этом как о месте, где мы можем ввести один или несколько синонимов ServerName. В соответствии с этими пунктами мое предложение следующее:
Внутри Ubuntu /var/www является каталогом по умолчанию, в котором должен храниться веб-контент пользователя. Это определено в глобальном файле конфигурации Apache: /etc/apache2/apache2.conf по директивам:<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Внутри Ubuntu /var/www является каталогом по умолчанию, в котором должен храниться веб-контент пользователя. Это определяется в глобальном файле конфигурации Apache: /etc/apache2/apache2.conf, директивами:
sudo nano /etc/apache2/sites-available/www.name.com.conf
Его содержимое должно быть чем-то вроде: <VirtualHost *:80>
ServerName www.name.com
ServerAlias name.com
ServerAdmin email@email.com
DocumentRoot /var/www/www.name.com/public_html
<Directory /var/www/www.name.com/public_html>
Options None FollowSymLinks
# Enable .htaccess Overrides:
AllowOverride All
DirectoryIndex index.html index.php
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>
Прямой связи между именем VirtualHost и его DocumentRoot. Прямой связи между именем VirtualHost и его именем DocumentRoot нет прямой связи.
Директива ServerName определяет имя общего сервера или имя определенного VirtualHost, когда оно помещается в его определение, - между тегами <VirtualHost>.Директива ServerName определяет имя общего сервера или имя определенного VirtualHost, когда оно помещается в его определение, - между тегами <VirtualHost>.
Ubuntu 14.04: sudo service apache2 restart Ubuntu 16.04: sudo systemctl restart apache2.service В целях эффективное определение VH, как правило, определение каждого отдельного VirtualHost помещается в отдельный файл конфигурации.Предположим, что теги VirtualHost точны. Вероятно, это потому, что ServerAlias не используется, если нет ServerName. Повторите попытку после изменения ServerAlias до ServerName во втором VirtualHost.
Хорошим напоминанием является установка ServerName для имени и использование ServerAlias для любых дополнительных псевдонимов. [ ! d1]
Обратите внимание, что если вы собираетесь использовать другой каталог (вне / var / www), чтобы разрешения были установлены правильно. Также, если используется SELinux, для этого каталога должен быть установлен соответствующий контекст. Но это не проблема, если вы не включили SELinux самостоятельно.
Уточнение нескольких базовых точек:
В Ubuntu /var/www - это каталог по умолчанию, в котором должен храниться веб-контент пользователя. Это определено в глобальном файле конфигурации Apache: /etc/apache2/apache2.conf, по директивам:<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Прямой связи между именем VirtualHost и его именем DocumentRoot нет прямой связи. Директива ServerName определяет имя общего сервера или имя определенного VirtualHost, когда оно помещается в его определение, - между тегами <VirtualHost>. В целях эффективного управления VH, как правило, определение каждого отдельного VirtualHost помещается в отдельный файл конфигурации. Директива ServerName требуется для каждого VirtualHost. Директива ServerAlias не требуется. Мы можем думать об этом как о месте, где мы можем ввести один или несколько синонимов ServerName. В соответствии с этими пунктами мое предложение следующее:
Внутри Ubuntu /var/www является каталогом по умолчанию, в котором должен храниться веб-контент пользователя. Это определено в глобальном файле конфигурации Apache: /etc/apache2/apache2.conf по директивам:<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Внутри Ubuntu /var/www является каталогом по умолчанию, в котором должен храниться веб-контент пользователя. Это определяется в глобальном файле конфигурации Apache: /etc/apache2/apache2.conf, директивами:
sudo nano /etc/apache2/sites-available/www.name.com.conf
Его содержимое должно быть чем-то вроде: <VirtualHost *:80>
ServerName www.name.com
ServerAlias name.com
ServerAdmin email@email.com
DocumentRoot /var/www/www.name.com/public_html
<Directory /var/www/www.name.com/public_html>
Options None FollowSymLinks
# Enable .htaccess Overrides:
AllowOverride All
DirectoryIndex index.html index.php
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>
Прямой связи между именем VirtualHost и его DocumentRoot. Прямой связи между именем VirtualHost и его именем DocumentRoot нет прямой связи.
Директива ServerName определяет имя общего сервера или имя определенного VirtualHost, когда оно помещается в его определение, - между тегами <VirtualHost>.Директива ServerName определяет имя общего сервера или имя определенного VirtualHost, когда оно помещается в его определение, - между тегами <VirtualHost>.
Ubuntu 14.04: sudo service apache2 restart Ubuntu 16.04: sudo systemctl restart apache2.service В целях эффективное определение VH, как правило, определение каждого отдельного VirtualHost помещается в отдельный файл конфигурации.Предположим, что теги VirtualHost точны. Вероятно, это потому, что ServerAlias не используется, если нет ServerName. Повторите попытку после изменения ServerAlias до ServerName во втором VirtualHost.
Хорошим напоминанием является установка ServerName для имени и использование ServerAlias для любых дополнительных псевдонимов. [ ! d1]
Обратите внимание, что если вы собираетесь использовать другой каталог (вне / var / www), чтобы разрешения были установлены правильно. Также, если используется SELinux, для этого каталога должен быть установлен соответствующий контекст. Но это не проблема, если вы не включили SELinux самостоятельно.