グローバルエントリーがあります
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を使用する回避策です(ドキュメントによれば、エイリアスの前に評価されます)。 1つの追加のホストと1つのグローバル構成ファイルが必要です。
ホスト自体をリダイレクトから除外して、すべてのacme-requestsをそのホストにリダイレクトするグローバル構成を作成(および有効化)します。
<If "%{HTTP_Host} != 'acme.mydomain.tld'">
RedirectMatch "^/.well-known/(.*)$" "http://acme.mydomain.tld/.well-known/$1"
</If>
これは、古いエイリアスアプローチで問題があったすべてのVirtualHostで機能します。
Apache 2.4のドキュメントによると、次のオプションがあります。
コンテナには2つの基本的なタイプがあります。ほとんどのコンテナは、リクエストごとに評価されます。囲まれたディレクティブは、コンテナに一致するリクエストにのみ適用されます。一方、
<IfDefine>, <IfModule>, and <IfVersion>
コンテナは、サーバーの起動時と再起動時にのみ評価されます。起動時に条件が真の場合、囲まれたディレクティブがすべてのリクエストに適用されます。条件が真でない場合、囲まれたディレクティブは無視されます。
上記のコンテナのいずれかを試してみて、すべてのリクエストに対してグローバルに必要なエイリアスを追加できるかもしれません。詳細はこちら: https://httpd.Apache.org/docs/2.4/sections.html#mergin 。