如何在 Apache 中从目录到 VirtualHost 目录创建别名?

如何在 Apache 中从目录到 VirtualHost 目录创建别名?

我有一个域名:示例.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 配置的解决方案。

答案1

可能有多种方法可以实现此目的。我能想到的两种方法:

符号链接

您可以为 VirtualHost 设置文档根目录admin,然后创建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 *:80>
    ServerName admin.example.com
    ServerAlias admin

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

主虚拟主机

<VirtualHost *:80>
    ServerName example.com

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

答案2

我知道这是一个老问题,但我认为它仍然有意义。目前,Postfixadmin 仍可通过别名访问Alias /postfixadmin /php/directory/of/postfixadmin。此别名现在位于/etc/apache2/conf-available/postfixadmin.conf。它不是 simlink - 它是 apache 配置中的别名。使用此方法,您可以使用/postfixadmin服务器中任何虚拟主机中的 URL 路径访问 postfixadmin。phpmyadmin 或使用此别名方法的任何其他应用程序也是如此。因此,您需要为所有虚拟主机进行一次安装:您只需为所有虚拟主机编辑/etc/postfixadmin/config.inc.php/etc/postfixadmin/dbconfig.inc.php运行/etc/postfixadmin/setup.php一次。但是,如果 PHP 具有不同的配置或以不同的用户身份运行,或者 Apache 在某些虚拟主机中具有不同的指令,则可能需要检查特定于此虚拟主机的配置。我怀疑这是 OP 遇到的问题。我注意到当会话不起作用时,postfixadmin 会默默失败,而且对配置文件(尤其是数据库)的访问权限很严格。如果 PHP 用户没有适当的权限,它将失败。

答案3

保留原始虚拟主机定义,并在文档根目录中放置一个名为“postfix”的目录。将 postfixadmin 文件放入其中。然后它将呈现在您请求的 admin.example.com/postfix 下。

相关内容