<FilesMatch> 是 Apache 配置指令,用于 匹配指定文件名或文件类型,并对其应用特定配置。
它和 <Files> 类似,但 <FilesMatch> 支持 正则表达式,更灵活。
基本用法
<FilesMatch “正则表达式”>
指令…
</FilesMatch>
“正则表达式”:匹配文件名
里面可以放任意适用于 <Directory> 或 <Files> 的指令,例如 SetHandler、Require、Order 等
示例 1:匹配 PHP 文件
<FilesMatch “\.php$”>
SetHandler “proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost/”
</FilesMatch>
说明:
- \.php$ → 匹配所有以 .php 结尾的文件
- SetHandler → 指定这些文件的处理方式为 FastCGI 转发到 PHP-FPM
- 作用:所有 PHP 文件的请求都会经过 PHP-FPM 处理,而不是直接返回或当作静态文件
示例 2:限制访问某类文件
<FilesMatch “\.(htaccess|env|ini)$”>
Require all denied
</FilesMatch>
说明:
- 匹配 .htaccess, .env, .ini 文件
- Require all denied → 拒绝访问
- 作用:保护敏感文件不被浏览器访问
比 <Files> 和 <FilesMatch>
| 指令 | 是否支持正则 | 示例 |
|---|---|---|
<Files> |
❌ 不支持正则,只能用简单通配符 * |
<Files "index.php"> ... </Files> |
<FilesMatch> |
✅ 支持正则 | <FilesMatch "\.php$"> ... </FilesMatch> |