Скажем, у меня есть папка ~ / apache /, содержащая два каталога веб-сайтов: www.website1.com www.website2.com
Прямо сейчас у меня все настроено с использованием конфигураций с доступностью сайтов и с поддержкой сайтов, которые сопоставляют домены с каталогами. Я хотел бы сделать так, чтобы все, что мне нужно было сделать, это создать новый каталог и указать правильный домен для моего сервера.
Я буду честен и скажу, что почти ничего не знаю о конфигурациях серверов. Я думаю, мне нужно что-то вроде
VirtualDocumentRoot ~/apache/%0
в файле конфигурации. httpd.conf? apache2.conf? Или было бы лучше поместить это в отдельный конфиг и включить его в основную конфигурацию?
Вы можете полностью отказаться от виртуального хостинга на основе имен, выключив все свои sites-enabled
файлы и поместите VirtualDocumentRoot
в конфигурации основного сервера.
Скорее всего, вы захотите создать новый виртуальный хост в sites-available
и связать его с sites-enabled
обычно, когда он действует как уловка для всех. Именование важно; он должен быть первым файлом в алфавитном порядке, чтобы его можно было рассматривать как файл по умолчанию.
Так:
/etc/apache2/sites-available/0-dynamic
.Дайте новому файлу vhost такой контент:
<VirtualHost *:80>
ServerName catchall
VirtualDocumentRoot /path/to/domains/%0
<Directory /path/to/domains>
Order Allow,Deny
Allow from all
</Directory>
</VirtualHost>
a2ensite 0-dynamic
. (если по умолчанию все еще используется в /etc/apache2/sites-enabled/000-default
, переименуйте его так, чтобы он шел после нового по алфавиту.Эта конфигурация будет обслуживать динамически настроенные сайты из VirtualDocumentRoot
, но может быть переопределен и обслуживаться другим <VirtualHost>
когда в этом блоке есть ServerName
или ServerAlias
что соответствует запросу. Это может быть полезно, если настройки вашего виртуального хоста не подходят для определенных доменов.
Изменить: (Добавление некоторых вещей, которые я испытал, пытаясь настроить это, что может быть полезно. Вся заслуга принадлежит оригинальному автору!)
VirtualDocumentRoot
Если вы получите сообщение об ошибке
Invalid command 'VirtualDocumentRoot', perhaps misspelled...
проверьте, включен ли модуль vhost_alias. Если это не так, беги
>sudo a2enmod vhost_alias
Обработка ведущих www
Добавьте следующие правила (не забудьте заменить example на ваш реальный домен) в файл по умолчанию 0 для обработки www.example.com и example.com.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
В этом примере www удаляется для всех запросов, поэтому каталог должен быть example.com.