1

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

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

4

3 回答 3

4

您可以使用 DirectoryMatch 指令来完全匹配该目录(并且仅匹配该目录):

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

它使用正则表达式来匹配目录路径。有关详细信息,请参阅http://httpd.apache.org/docs/2.0/mod/core.html#directorymatch

于 2009-11-03T04:23:20.170 回答
4

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

于 2010-08-23T15:16:26.350 回答
1

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

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

不同之处在于/?$,它允许请求“可能以也可能不以斜杠结尾”。见2.4 手册。<DirectoryMatch>

IndexOrderDefault但请注意,以上仅适用于仅适用于目录请求的指令。(我认为手册在这一点上不清楚。)如果您想添加一个适用于对目录中包含的常规文件的请求的指令,那么您需要这样的东西:

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

请注意,仅当所有子目录请求都以斜杠终止时才有效,当保留其默认设置时,它们实际上是有效的。<DirectorySlash>

而所有这些都需要 Apache 2.3.9 或更高版本。“在 2.3.9 之前,[ <DirectoryMatch>] 隐式应用于子目录(如),无法匹配行尾符号 ( )。”</p> <Directory>$

于 2020-10-20T18:52:44.220 回答