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

我有一个域名: example.com 。 还有一个子域admin.example.com

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

现在我想在admin.example.com/postfix上提供postfixadmin控制面板。 /etc/apache2/conf.d/postfixadmin的默认configuration是:

 Alias /postfixadmin /usr/share/postfixadmin 

我应该如何改变它? 我想要的是这样的:

 Alias admin/postfix /usr/share/postfixadmin 

编辑:我知道我可以在文档根目录下创build一个符号链接,指向/usr/share/postfixadmin ,但我正在通过Apacheconfiguration的方式寻找解决scheme。

有可能有多种方法来完成这一点。 我可以想到两种方法:

符号链接

您可以为admin虚拟主机设置一个文档根目录,然后为/usr/share/postfixadmin创build一个postfixadmin符号链接。 就像是:

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

目录安全

保持原来的alias ,你可以为每个虚拟主机设置一些直接的安全性,只允许admin虚拟主机访问该目录。 就像是:

pipe理员虚拟主机

 <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> 

保留原来的虚拟主机定义,并在名为“postfix”的文档根目录中放置一个目录。 把postfixadmin文件放在那里。 这将在您请求的admin.example.com/postfix下呈现

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