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

Как установить apache2.conf для одного и того же домена в другой каталог?

Среда: apache 2.4 + debian 9.
Я создал WordPress в каталоге /var/www/html/wp1, установка на /etc/apache2/apache2.conf.

<VirtualHost *:80>
DocumentRoot /var/www/html
<Directory /var/www/html>
    Options Indexes FollowSymLinks
    AllowOverride None
    Order deny,Allow
    Allow from all
    Require all granted
</Directory>
</VirtualHost *:80>

127.0.0.1/wp1 могу это показать. Я создаю еще один WordPress на /home/material/wp2, измените настройку, как показано ниже /etc/apache2/apache2.conf.

<VirtualHost *:80>
DocumentRoot /home/material
<Directory /home/material>
    Options Indexes FollowSymLinks
    AllowOverride None
    Order deny,Allow
    Allow from all
    Require all granted
</Directory>
</VirtualHost *:80>

127.0.0.1/wp2 могу это показать. Теперь я хочу объединить два параметра, чтобы 127.0.0.1/wp1 показать WordPress на /var/www/html/wp1127.0.0.1/wp2 показать WordPress на /home/material/wp2, простое сочетание этих двух настроек не может достичь моей цели.
Как написать правильную настройку?

Есть несколько вещей, которые вы не должны делать или делать неправильно.

В Debian основным файлом конфигурации является /etc/apache2/apache2.conf который включает другие файлы конфигурации относительно основного каталога /etc/apache2:

  • конфигурации сайта из sites-enabled/*.conf
  • общие файлы конфигурации из conf-enabled/*.conf
  • конфигурации модуля mods-enabled/*.load и mods-enabled/*.conf

В доступный файлы конфигурации находятся в каталогах sites-available, conf-available и mods-available и чтобы включить конфигурацию, вы можете использовать команды a2ensite, a2enconf и a2enmod который связывает их с xxx-available в xxx-enabled. Чтобы отключить конфигурацию, вы должны использовать a2dissite, a2disconf и a2dismod.

Первая ошибка - редактировать основной файл конфигурации /etc/apache2/apache2.conf. Вместо этого вы должны были сделать это:

  1. Отключите (или отредактируйте) конфигурацию по умолчанию с помощью a2dissite 000-default (каталог sites-enabled сейчас пусто)
  2. Создайте новую конфигурацию, например sites-available/wordpress.conf с содержанием вашей конфигурации
  3. Включите новую конфигурацию с помощью a2ensite wordpress какие символические ссылки wordpress.conf в sites-enabled
  4. Бегать apachectl configtest чтобы узнать, есть ли у вас синтаксические ошибки
  5. Перезагрузите сервер с помощью service apache2 restart если предыдущая команда была успешной.

В вашей конфигурации есть одна синтаксическая ошибка и несколько ошибок:

  • Вместо закрытия </VirtualHost> ты использовал </VirtualHost *:80>
  • Order deny,Allow и Allow from all является устаревший синтаксис в Apache 2.4. Вам нужно только Require all granted.
  • ServerName пропал, отсутствует. Взгляните на Примеры VirtualHost.

Если вы хотите использовать порт 80 для обоих сайтов, это может работать как ваша новая конфигурация. sites-available/wordpress.conf (непроверено):

<VirtualHost *:80>
    # set your host name/server name
    ServerName myservername

    # wp1
    DocumentRoot /var/www/html
    <Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>

    # wp2
    Alias /wp2 /home/material/wp2
    <Directory /home/material/wp2>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>

Или даже проще: переместите wp2 каталог для /var/www/html и удалите строки для второго экземпляра wordpress из конфигурации.

И не забудьте восстановить оригинал /etc/apache2/apache2.conf.