有没有办法在不使用.htaccess文件的情况下将规则应用于单个目录而不是其子目录?我希望/ var / www / html按Date desc排序。但是,在子目录中,我不希望应用此规则。
现在,我在/ var / www / html目录标记中有IndexOrderDefault Descending Date。
答案 0 :(得分:4)
您可以使用DirectoryMatch指令完全匹配该目录(并且只与该目录匹配):
<DirectoryMatch "^/www/var/html$">
IndexOrderDefault Descending Date
</DirectoryMatch>
它使用正则表达式来匹配目录路径。有关详细信息,请参阅http://httpd.apache.org/docs/2.0/mod/core.html#directorymatch。
答案 1 :(得分:4)
对于遇到此问题的用户:请参阅https://issues.apache.org/bugzilla/show_bug.cgi?id=49809(Apache错误49809)。由于某些无法解释的原因,Apache不被Apache识别为终端锚。
答案 2 :(得分:0)
在Apache 2.4.43下,Rich Leland的答案对我不起作用。起作用的是:
<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>
]隐式应用于子目录(如<Directory>
),并且与行符号($
的结尾不匹配。”