![如何在 Apache 中从目录到 VirtualHost 目录创建别名?](https://linux22.com/image/613301/%E5%A6%82%E4%BD%95%E5%9C%A8%20Apache%20%E4%B8%AD%E4%BB%8E%E7%9B%AE%E5%BD%95%E5%88%B0%20VirtualHost%20%E7%9B%AE%E5%BD%95%E5%88%9B%E5%BB%BA%E5%88%AB%E5%90%8D%EF%BC%9F.png)
我有一个域名:示例.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 下。