【问题标题】:Apache Config - Exclude SubdirectoriesApache Config - 排除子目录
【发布时间】:2010-12-12 12:29:39
【问题描述】:

有没有办法在不使用 .htaccess 文件的情况下将规则应用于单个目录而不是其子目录?我希望 /var/www/html 按日期顺序排序。但是,在子目录中,我不希望应用此规则。

现在,我在 /var/www/html 目录标签中有 IndexOrderDefault Descending Date。

【问题讨论】:

    标签: apache configuration subdirectory


    【解决方案1】:

    您可以使用 DirectoryMatch 指令精确匹配该目录(并且仅匹配该目录):

    <DirectoryMatch "^/www/var/html$">
        IndexOrderDefault Descending Date
    </DirectoryMatch>
    

    它使用正则表达式来匹配目录路径。请参阅http://httpd.apache.org/docs/2.0/mod/core.html#directorymatch 了解更多信息。

    【讨论】:

    • 是的,我读过的所有内容都表明这是最好的方法。出于某种原因,我在 Fedora 8 上的 apache 似乎忽略了正则表达式中的行尾锚。当我有机会时,我会在我的 Centos 盒子上尝试一下,如果成功,我会给你功劳。
    【解决方案2】:

    对于遇到此问题的用户:请参阅https://issues.apache.org/bugzilla/show_bug.cgi?id=49809(Apache 错误 49809)。由于某些莫名其妙的原因,Apache 无法将 $ 识别为行尾锚。

    【讨论】:

    • 很好的后续行动。我希望我有时间研究一下。我记得我把头撞在墙上!
    【解决方案3】:

    Rich Leland 的回答在 Apache 2.4.43 下对我不起作用。这是什么工作:

    <DirectoryMatch '^/var/www/html/?$'>
        IndexOrderDefault Descending Date
        </DirectoryMatch>
    

    区别在于/?$,它允许请求“可能以斜杠结尾,也可能不以斜杠结尾”。请参阅 2.4 手册中的&lt;@987654321@&gt;

    但请注意,上述内容仅适用于诸如 IndexOrderDefault 之类的指令,这些指令仅适用于目录请求。 (我认为手册在这一点上并不清楚。)如果你想添加一个指令,适用于对目录中常规文件 contained 的请求,那么你需要这样的东西:

    <DirectoryMatch '^/var/www/html(?:/[^/]*)?$'>
        IndexOrderDefault Descending Date
        SetOutputFilter DEFLATE
        </DirectoryMatch>
    

    请注意,仅当所有子目录请求都以斜杠终止时才有效,当&lt;@987654322@&gt; 保留其默认设置时有效。

    所有这些都需要 Apache 2.3.9 或更高版本。 “在 2.3.9 之前,[&lt;DirectoryMatch&gt;] 隐式应用于子目录(如&lt;@987654323@&gt;)并且无法匹配行尾符号($)。”

    【讨论】:

    • "仅当所有子目录请求都以斜线终止时才有效" 那么,如果子目录请求以斜线终止会怎样?这些指令是否根本不适用于任何事情?或者它们确实适用于所需的文件,但也适用于子目录及其文件?
    • 另外,您的正则表达式似乎是为匹配完整文件路径而构建的。我原以为当请求一个文件时,Apache 本身会解析出路径的目录部分,并使用它来匹配 DirectoryMatch 参数。没有?
    • 我的最后一条评论...我已经做了一些测试(Apache 2.4.46),看起来你的方法是正确的 - 如果指令适用于目录内的文件,那么DirectoryMatch 指令的参数需要匹配完整的文件路径,包括文件名。奇怪,恕我直言。这显然不是 Directory 指令的工作方式。
    猜你喜欢
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    • 2014-02-18
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-09
    相关资源
    最近更新 更多