Centos

phpMyAdmin(帶有別名)如何具有不同 documentRoot 的虛擬主機子域

  • May 25, 2016

為了提高伺服器的安全性,我只為管理員創建了一個子域,例如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>

引用自:https://serverfault.com/questions/778828