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

Как создать псевдоним из каталога в каталог VirtualHost в Apache?

У меня есть домен: example.com. Также есть субдомен, admin.example.com:

<VirtualHost *:80>
    ServerName admin.example.com
    ServerAlias admin
</VirtualHost>

Теперь я хочу сделать postfixadmin панель управления доступна по адресу admin.example.com/postfix. Конфигурация по умолчанию в /etc/apache2/conf.d/postfixadmin является:

Alias /postfixadmin /usr/share/postfixadmin

Как мне это изменить? Я хочу что-то вроде:

Alias admin/postfix /usr/share/postfixadmin

Изменить: я знаю, что могу просто создать символическую ссылку в корне документа, указывая на /usr/share/postfixadmin, но я ищу решение через конфигурацию Apache.

Вероятно, есть несколько способов добиться этого. Я могу думать о двух способах:

Символическая ссылка

Вы можете установить корень документа для admin VirtualHost, а затем создайте postfixadmin символическая ссылка на /usr/share/postfixadmin. Что-то вроде:

<VirtualHost *:80>
    ServerName admin.example.com
    ServerAlias admin
    DocumentRoot /var/www/admin

    <Directory /var/www/admin>
        Options +FollowSymLinks
    </Directory>
</VirtualHost>

Безопасность каталога

Сохранение оригинала alias, вы можете установить некоторую директивную безопасность для виртуальных хостов, чтобы разрешить только admin виртуальный хост для доступа к каталогу. Что-то вроде:

Администратор VirtualHost

<VirtualHost *:80>
    ServerName admin.example.com
    ServerAlias admin

    <Directory /usr/share/postfixadmin>
        Order Deny,Allow
        Allow from All
    </Directory>
</VirtualHost>

Главный VirtualHost

<VirtualHost *:80>
    ServerName example.com

    <Directory /usr/share/postfixadmin>
        Order Deny,Allow
        Deny from All
    </Directory>
</VirtualHost>

Я знаю, что это старый вопрос, но я думаю, что он все еще актуален. В настоящее время доступ к Postfixadmin по-прежнему осуществляется через псевдоним Alias /postfixadmin /php/directory/of/postfixadmin. Этот псевдоним теперь находится в /etc/apache2/conf-available/postfixadmin.conf. Это не симлинк - это псевдоним в конфигурации apache. При таком подходе вы можете получить доступ к postfixadmin по пути URL /postfixadmin на любых виртуальных хостах на вашем сервере. То же самое и с phpmyadmin, и с любым другим приложением, использующим этот подход псевдонима. Итак, вам нужна одна установка для всех виртуальных хостов: вы редактируете /etc/postfixadmin/config.inc.php и /etc/postfixadmin/dbconfig.inc.php и беги /etc/postfixadmin/setup.php только один раз для всех виртуальных хостов. Однако, если PHP имеет другую конфигурацию или работает от имени другого пользователя, или Apache имеет разные директивы на каком-то виртуальном хосте, вам может потребоваться проверить конфигурации, специфичные для этого виртуального хоста. Я подозреваю, что это была проблема OP. Я заметил, что postfixadmin автоматически завершается сбоем, когда сеанс не работает, и, кроме того, права доступа к файлам конфигурации, особенно к базе данных, жесткие. Если у пользователя PHP нет соответствующих прав, произойдет сбой.

Оставьте исходное определение виртуального хоста таким, какое оно есть, и поместите в корень вашего документа каталог под названием "postfix". Поместите туда файлы postfixadmin. Затем это будет отображаться под вашим запрошенным admin.example.com/postfix