使用 .htaccess 中的 Files 指令预加载链接

Dav*_*tob 4 .htaccess

我目前正在为 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>`
Run Code Online (Sandbox Code Playgroud)

该链接工作正常,这是我正在努力解决的条件加载。尝试添加通配符,加上完整的 URL 等,但没有任何乐趣。

我是否认为这不是语法,但它需要允许才能起作用?

MrW*_*ite 5

这是语法...

<Files>指令仅匹配文件名(例如foo.php) - 当请求映射到文件系统上的物理文件时。由于这是 WordPress,我认为/test/它甚至不是文件系统目录——它只是一个 URL 路径?

您可以在请求此 URL 路径时使用 mod_setenvif 设置环境变量,然后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
Run Code Online (Sandbox Code Playgroud)

正则表达式^/test/匹配任何以开头的 URL 路径/test/。如果这应该匹配单个 URL,/test/则在正则表达式中附加一个字符串结尾的锚点:^/test/$

请注意指令env=PRELOAD_FONT末尾的额外参数Header。仅当PRELOAD_FONT由前面的SetEnvIf指令设置的环境变量也设置时才设置标头。