Laden Sie den Link mithilfe der Dateirichtlinie in .htaccess vor

Mar 19 2020

Ich lade gerade Schriftdateien für eine Webseite in WordPress vor.

Also https://example.comnicht vorinstalliert. https://example.com/test/vorinstallierte Schriftartdatei.

Das ist es, worauf ich mich eingelassen habe .htaccess.

<Files "/test/">
Header add Link "</fonts/poppins.woff2>; rel=preload; as=font; type=font/woff2; crossorigin"
</Files>`

Der Link funktioniert einwandfrei, es ist das bedingte Laden, mit dem ich zu kämpfen habe. Versucht, Platzhalter sowie die vollständige URL usw. hinzuzufügen, aber keine Freude.

Habe ich Recht, wenn ich denke, dass es nicht die Syntax ist, aber es muss zugelassen werden, bevor es funktioniert?

Antworten

5 MrWhite Mar 19 2020 at 05:14

Es ist die Syntax ...

Die <Files>Direktive stimmt nur mit Dateinamen überein (z. B. foo.php), wenn die Anforderung physischen Dateien im Dateisystem zugeordnet ist. Da dies WordPress ist, nehme ich an, dass /test/es nicht einmal ein Dateisystemverzeichnis ist - es ist einfach ein URL-Pfad?

Sie können mod_setenvif verwenden, um eine Umgebungsvariable festzulegen, wenn dieser URL-Pfad angefordert wird, und dann die Headerauf dieser Umgebungsvariablen basierende Bedingung festzulegen .

Dies sollte vor dem WordPress-Front-Controller in der Nähe des oberen Randes Ihrer .htaccessDatei erfolgen.

Zum Beispiel:

SetEnvIf Request_URI "^/test/" PRELOAD_FONT
Header add Link "</fonts/poppins.woff2>; rel=preload; as=font; type=font/woff2; crossorigin" env=PRELOAD_FONT

Der reguläre Ausdruck ^/test/entspricht jedem URL-Pfad, der gestartet wird /test/ . Wenn dies nur mit der einzelnen URL übereinstimmen soll, /test/fügen Sie dem regulären Ausdruck einen Anker für das Ende der Zeichenfolge hinzu : ^/test/$.

Beachten Sie das zusätzliche env=PRELOAD_FONTArgument am Ende der HeaderDirektive. Der Header wird nur gesetzt, wenn auch die PRELOAD_FONTUmgebungsvariable gesetzt ist, die durch die vorhergehende SetEnvIfAnweisung gesetzt wurde.