.htaccessのファイルディレクティブを使用してリンクをプリロードします

Mar 19 2020

現在、WordPressの1つのWebページのフォントファイルをプリロードしています。

したがって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などを追加しようとしましたが、喜びはありませんでした。

構文ではないと思うのは正しいのですが、機能する前に許可する必要がありますか?

回答

5 MrWhite Mar 19 2020 at 05:14

構文です...

<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ディレクティブで設定された環境変数も設定されている場合にのみ設定されます。