如何从FilesMatch中排除目录

时间:2017-04-26 17:02:17

标签: 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>

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

有可能吗?

1 个答案:

答案 0 :(得分:5)

.htaccess files - What they are/How to use them解释了.htaccess文件的工作原理

  

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

这意味着,您可以在/home/abc/public_html/中创建.htaccess文件,在/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>

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>