我目前正在为 WordPress 上的一个网页预加载字体文件。
所以https://example.com
没有预加载。https://example.com/test/
预加载字体文件。
这 就是 我 得到 的.htaccess
.
<Files "/test/">
Header add Link "</fonts/poppins.woff2>; rel=preload; as=font; type=font/woff2; crossorigin"
</Files>`
链接工作正常,我遇到的困难在于条件加载。尝试添加通配符,加上完整的 URL 等,但毫无效果。
我是否可以正确地认为这不是语法问题,而是需要允许它才能起作用?
答案1
这是语法...
指令<Files>
匹配文件名仅(例如foo.php
)- 当请求映射到文件系统上的物理文件时。由于这是 WordPress,我假设/test/
甚至不是一个文件系统目录 - 它只是一个 URL 路径?
您可以使用 mod_setenvif 在请求此 URL 路径时设置环境变量,然后Header
根据此环境变量有条件地设置。
这应该前WordPress 前端控制器,位于文件顶部附近.htaccess
。
例如:
SetEnvIf Request_URI "^/test/" PRELOAD_FONT
Header add Link "</fonts/poppins.woff2>; rel=preload; as=font; type=font/woff2; crossorigin" env=PRELOAD_FONT
正则表达式^/test/
匹配任意 URL 路径开始 /test/
. 如果这应该仅有的匹配单个 URL /test/
,然后将字符串末尾的锚点附加到正则表达式:^/test/$
。
env=PRELOAD_FONT
注意指令末尾的额外参数。仅当前一个指令设置的环境变量也设置Header
时,才会设置标头。PRELOAD_FONT
SetEnvIf