我有一个网站,其配置如下:
<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/piwik
uwsgi(Moinmoin)提供服务。
总结一下,
- 如果唯一的部分是 Matomo 的
Directory
部分,那么它的SetHandler
指令就会发挥作用。 - 如果
/piwik/
没有自己的Location
,那么SetHandler
它的内部Directory
部分就不会被尊重:这是意料之中的,因为Location
部分应该优先于Directory
部分。 - 但是,如果
/piwik/
确实有自己的Location
,那么它的SetHandler
语句应该很荣幸,因为它来得晚。事实上,发生了一些事情,因为请求不是由 uwsgi 提供的。但它也不是由 php 提供的。
出了什么问题?请注意,我确信 Moinmoin 和 Matomo 在系统升级之前都可以正常工作,尽管我不再确定配置文件的具体情况,但我很确定我尝试了所有组合,包括以前有效的组合。
编辑:相关,但不能解释我的问题:Apache 如何合并多个匹配的位置部分