Laden Sie den Link mithilfe der Dateirichtlinie in .htaccess vor
Ich lade gerade Schriftdateien für eine Webseite in WordPress vor.
Also https://example.com
nicht 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
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 Header
auf dieser Umgebungsvariablen basierende Bedingung festzulegen .
Dies sollte vor dem WordPress-Front-Controller in der Nähe des oberen Randes Ihrer .htaccess
Datei 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_FONT
Argument am Ende der Header
Direktive. Der Header wird nur gesetzt, wenn auch die PRELOAD_FONT
Umgebungsvariable gesetzt ist, die durch die vorhergehende SetEnvIf
Anweisung gesetzt wurde.