有没有办法在不使用 .htaccess 文件的情况下将规则应用于单个目录而不是其子目录?我希望 /var/www/html 按日期顺序排序。但是,在子目录中,我不希望应用此规则。
现在,我在 /var/www/html 目录标签中有 IndexOrderDefault Descending Date。
有没有办法在不使用 .htaccess 文件的情况下将规则应用于单个目录而不是其子目录?我希望 /var/www/html 按日期顺序排序。但是,在子目录中,我不希望应用此规则。
现在,我在 /var/www/html 目录标签中有 IndexOrderDefault Descending Date。
您可以使用 DirectoryMatch 指令来完全匹配该目录(并且仅匹配该目录):
<DirectoryMatch "^/www/var/html$">
IndexOrderDefault Descending Date
</DirectoryMatch>
它使用正则表达式来匹配目录路径。有关详细信息,请参阅http://httpd.apache.org/docs/2.0/mod/core.html#directorymatch。
对于遇到此问题的用户:请参阅https://issues.apache.org/bugzilla/show_bug.cgi?id=49809(Apache错误 49809)。由于某些莫名其妙的原因,Apache 不将 $ 识别为行尾锚。
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>
$