Virtualhost
全域 Apache 別名,忽略虛擬主機
我有一個全域條目
Alias /.well-known/acme-challenge /var/www/letsencrypt/.well-known/acme-challenge/
在我的 apache 配置中,在任何虛擬主機之外。這樣,上述別名對所有虛擬主機都有效。不幸的是,仍有一些虛擬主機無法按預期工作,例如由於重定向、身份驗證要求等。
有沒有辦法告訴 apache 在讀取特定虛擬主機的配置之前考慮這個別名?
您可以嘗試在所有虛擬主機之前添加它:
Alias /.well-known/acme-challenge/ /var/www/letsencrypt/.well-known/acme-challenge/ #Bypass Auth <Directory /var/www/letsencrypt/.well-known/acme-challenge/> Satisfy any </Directory> #Redirect before other rewrite rules RewriteCond %{REQUEST_URI} /\.well\-known/acme\-challenge/ RewriteRule (.*) /.well-known/acme-challenge/$1 [L,QSA]
我遇到了同樣的letsencrypt acme apache別名問題。通讀 apache 文件後,我仍然不明白為什麼全域別名不能按預期工作(根據文件應該)。
無論如何,這是一個使用 RedirectMatch 的解決方法(根據文件,它在別名之前被評估)。它需要一台額外的主機和一個全域配置文件:
- 創建一個僅服務於 acme 請求的附加(子)域/主機,比如說“acme.mydomain.tld”
- 創建(並啟用)將所有 acme 請求重定向到該主機的全域配置,不包括重定向主機本身:
<If "%{HTTP_HOST} != 'acme.mydomain.tld'"> RedirectMatch "^/.well-known/(.*)$" "http://acme.mydomain.tld/.well-known/$1" </If>
這適用於我所有與舊別名方法有問題的虛擬主機。