全局Apache别名,忽略虚拟主机

我有一个全球入口

Alias /.well-known/acme-challenge /var/www/letsencrypt/.well-known/acme-challenge/ 

在我的apacheconfiguration中,在任何虚拟主机之外。 这样,以上别名对所有虚拟主机都有效。 不幸的是,仍然存在这样的虚拟主机,其不能按预期工作,例如由于redirect,authentication要求等。

有没有办法告诉Apache甚至在读取特定虚拟主机的configuration之前考虑这个别名?

您可以尝试在所有虚拟主机之前添加此项:

 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] 

根据Apache 2.4文档,你有这些选项:

有两种基本types的容器。 每个请求都会评估大多数容器。 所附指令仅适用于与容器匹配的请求。 另一方面, <IfDefine>, <IfModule>, and <IfVersion>容器仅在服务器启动和重新启动时进行评估。 如果他们的条件在启动时是正确的,那么封闭的指令将适用于所有请求。 如果条件不成立,封闭的指令将被忽略。

也许你可以尝试使用上面提到的容器之一,并添加你需要全局的所有请求的别名。 在这里看到细节: https : //httpd.apache.org/docs/2.4/sections.html#mergin 。