覆盖默认Apache <VirtualHost>块中的单个设置

 张浩杰_Hh 发布于 2023-02-06 18:42

在debian的默认apache2配置中,/etc/apache2/sites-enabled/000-default包含许多默认VirtualHost的设置:


    # Many good settings here, among them:
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

在另一个配置文件中,我想覆盖它们中的一个,即CustomLog设置,以便日志转到其他地方.我不想复制或搞乱所有其他设置,例如ScriptAlias.但我仍然希望它适用于.

那可能吗?

我尝试了什么

我试过这个 /etc/apache2/sites-enabled/001-mylog:


    CustomLog ${APACHE_LOG_DIR}/my.log combined

这没有任何影响,大概是因为apache只查看第一部分,然后/etc/apache2/sites-enabled/000-default才加载/etc/apache2/sites-enabled/001-mylog.

相反,我尝试将相同的片段放入/etc/apache2/conf.d/mylog,之前加载,/etc/apache2/sites-enabled/000-default因为/etc/apache2/apache2.conf有一个Include conf.d/之前Include sites-enabled/.这确实覆盖了CustomLog我想要的价值.但是现在这个ScriptAlias从未/etc/apache2/sites-enabled/000-default生效.

我想避免重复一切,从/etc/apache2/sites-enabled/000-default有效创建默认debian apache配置文件的fork.

文档

Apache HTTP Server - 核心文档相当模糊:

收到请求后,服务器首先根据本地IP地址和端口组合将其映射到最佳匹配.非通配符具有更高的优先级.如果根本不发生基于IP和端口的匹配,则使用"主"服务器配置.

如果多个虚拟主机包含最匹配的IP地址和端口,则服务器会根据请求的主机名从这些虚拟主机中选择最佳匹配.如果未找到匹配的基于名称的虚拟主机,则将使用与IP地址匹配的第一个列出的虚拟主机.因此,给定IP地址和端口组合的第一个列出的虚拟主机是该IP和端口组合的默认虚拟主机.

表现得不像

非常混乱,它看起来好像对于指令,只考虑一个匹配的实例.但是对于eg 指令,它们被添加/组合,因此:


        Options Indexes MultiViews FollowSymLinks


        AllowOverride None
        Order deny,allow
        Allow from all

相当于:


        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Allow from all

但这种机制不适用于:-(

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有