为了提高服务器的安全性,我创建了一个仅供管理员使用的子域,通常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>