显示服务器上所有虚拟主机(域和子域)列表的 Apache/PHP 网站

显示服务器上所有虚拟主机(域和子域)列表的 Apache/PHP 网站

如何在 PHP 中创建一个动态网页(通过 htaccess 保护)来显示当前通过 vhosts 设置的所有域和子域的列表?

答案1

没有直接的方法来实现这一点。您必须解析 localhost/server-info 或 php 中的 Apache Vhost-confs 的输出,也许提取所有 ServerName 和 ServerAlias 行。

如果您规范化 vhost-confs,则可以简化此过程 - 即每个 vhost 都有一个文件 /sites-enabled/sub.domain.com.conf,并且每个 ServerAlias 行只有一个别名并且不使用通配符。否则它可能是一个相当大的项目...

答案2

从 apache 获取此信息的规范方法是使用httpd -S(在某些操作系统(例如 debian/ubuntu 和其他操作系统上可能是)apache2 -S。根据环境的不同,在此命令生效之前可能会设置一堆环境变量。在 debian/ubuntu 上,你可以运行. /etc/apache2/envvars ; /usr/sbin/apache2 -S

附注:由于您提到了 .htaccess,当您有权更改实际的 apache 配置时,请不要使用 .htaccess。.htaccess 适用于无法更改 apache 配置的非特权用户,并且在启用时会出现性能和安全问题。

相关内容