如何从FilesMatch中排除目录

H. *_*nce 5 apache .htaccess

我有以下.htaccess指令:

<FilesMatch ".(htm|html|php)$">
  php_value auto_prepend_file "/home/abc/public_html/_prepend.php"
  php_value auto_append_file "/home/abc/public_html/_append.php"
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)

我需要从auto_prepend和auto_append中排除一个非常具体的目录'/ home/abc/public_html/exclude /`.

可能吗?

Ola*_*che 6

.htaccess文件 - 它们是什么/如何使用它们解释了.htaccess文件的工作原理

包含一个或多个配置指令的文件放在特定的文档目录中,并且指令适用于该目录及其所有子目录.

这意味着,您可以创建一个.htaccess文件/home/abc/public_html/,另一个/home/abc/public_html/exclude/包含相同,不同甚至相互矛盾的指令.


看看PHP -auto_prepend_file你可以看到

特殊值none禁用自动前置.

这同样适用于auto_append_file.


把这两件事放在一起就意味着你可以拥有现有的.htaccess

# /home/abc/public_html/.htaccess
<FilesMatch ".(htm|html|php)$">
  php_value auto_prepend_file "/home/abc/public_html/_prepend.php"
  php_value auto_append_file "/home/abc/public_html/_append.php"
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)

exclude子目录中的第二个.htaccess

# /home/abc/public_html/exclude/.htaccess
<FilesMatch ".(htm|html|php)$">
  php_value auto_prepend_file none
  php_value auto_append_file none
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)