升级后,apache2 中不再合并具有不同处理程序的多个“位置”部分

升级后,apache2 中不再合并具有不同处理程序的多个“位置”部分

我有一个网站,其配置如下:

<VirtualHost *:80>
    ServerName example.it

<Location />
    SetHandler uwsgi-handler
    uWSGISocket /var/sitedir/moin.sock
</Location>

<Location /piwik/>
    SetHandler application/x-httpd-php
</Location>

<Directory "/var/piwik/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Require all granted
    SetHandler application/x-httpd-php
</Directory>

Alias /piwik/ "/var/piwik/"

</VirtualHost>

... 包括一个 moinmoin wiki 和一个 Matomo 实例;但由于系统升级,当我访问时http://example.it/piwik,我得到了来源index.php里面的文件——/var/piwik/它不会被执行。

我知道这说明存在一些 php 问题 - 但如果我删除这两个Location部分,Matomo 就可以正常工作http://example.it/piwik(Moinmoin 显然停止工作)。所以这确实是此配置的问题。如果我只删除第二Location部分(Matomo 的部分),则由http://example.it/piwikuwsgi(Moinmoin)提供服务。

总结一下,

  1. 如果唯一的部分是 Matomo 的Directory部分,那么它的SetHandler指令就会发挥作用。
  2. 如果/piwik/没有自己的Location,那么SetHandler它的内部Directory部分就不会被尊重:这是意料之中的,因为Location部分应该优先于Directory部分
  3. 但是,如果/piwik/确实有自己的Location,那么它的SetHandler语句应该很荣幸,因为它来得晚。事实上,发生了一些事情,因为请求不是由 uwsgi 提供的。但它也不是由 php 提供的。

出了什么问题?请注意,我确信 Moinmoin 和 Matomo 在系统升级之前都可以正常工作,尽管我不再确定配置文件的具体情况,但我很确定我尝试了所有组合,包括以前有效的组合。

编辑:相关,但不能解释我的问题:Apache 如何合并多个匹配的位置部分

相关内容