如何让 phpMyAdmin(带有别名)与不同 documentRoot 的虚拟主机子域一起使用

如何让 phpMyAdmin(带有别名)与不同 documentRoot 的虚拟主机子域一起使用

为了提高服务器的安全性,我创建了一个仅供管理员使用的子域,通常admin.domain.tld我只需通过admin.domain.tld/mysqladmin配置文件中的以下方式访问 phpmyadmin:

<VirtualHost *:80>

    ServerName admin.domain.tld
    Alias /mysqladmin /usr/share/phpMyAdmin/

    <Directory /usr/share/phpMyAdmin/>
        AddDefaultCharset UTF-8
        AllowOverride All

    [...]

</VirtualHost>

现在我有一个子域名,我想用 SSL 保护它,为此我需要配置一个虚拟主机或类似的东西(我使用 certbot 又名 let's encrypt),但由于我必须配置虚拟主机,我决定创建一个仅限管理员的 html 页面,其中包含指向admin.domain.tld我的管理页面的链接,如 phpmyadmin、joomla 管理页面等...

配置文件:

    ServerName  admin.domain.tld

    DocumentRoot /var/www/admin.domain.tld
    ErrorLog /var/log/httpd/admin.domain.tld/error.log
    <Directory /var/www/admin.domain.tld>
            Options FollowSymLinks Indexes
            AllowOverride All
    </Directory>

但是现在当我去时admin.domain.tld/mysqladmin出现错误:

The requested URL /mysqladmin/ was not found on this server.

那么,我怎样才能让它像这样工作:

admin.domain.tld 是 /var/www/admin.domain.tld

admin.domain.tld/mysqladmin 是 phpmyadmin

编辑:我想我的问题是别名不起作用,所以当我转到 admin.domain.tld 时,它显示 /var/www/admin.domain.tld/mysqladmin 而不是 /usr/share/phpMyAdmin

答案1

您在第一个配置中执行循环。您将别名发送到相同的根目录,因此当调用别名时,将显示相同的根目录。在这种情况下,您将需要一个mysqladmin文件夹/usr/share/phpMyAdmin/

尝试/var/www/admin.domain.tld在两个配置文件中使用根目录,这样别名mysqladmin将转发到phpmyadmin

答案2

我设法通过将 phpmyadmin 虚拟主机的内容与 admin.domain.tld 的内容放在一起来解决我的问题。如下所示:

<VirtualHost *:80>
    ServerName  admin.domain.tld
    DocumentRoot /var/www/admin.domain.tld
    ErrorLog /var/log/httpd/admin.domain.tld/error.log
    <Directory /var/www/admin.domain.tld>
        Options FollowSymLinks Indexes
        AllowOverride All
    </Directory>
    Alias /mysqladmin /usr/share/phpMyAdmin
    <Directory /usr/share/phpMyAdmin/>
        AddDefaultCharset UTF-8
        AllowOverride All

     [...]

</VirtualHost>

相关内容