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 aka 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
您正在第一個配置中執行循環。您將別名發送到相同的根目錄,因此在呼叫別名時,將顯示相同的根目錄。在這種情況下,您將需要一個
mysqladmin
文件夾/usr/share/phpMyAdmin/
。嘗試
/var/www/admin.domain.tld
在兩個配置文件中使用到根目錄,這樣別名mysqladmin
將轉發到phpmyadmin
.
我設法通過將 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>