Ich setze Cache Control Header für Dateien. Ich möchte max-age=86400
für alle .css
und .js
und max-age=3600
für alle anderen festlegen.
Ich kann nicht herausfinden, welche Regex ich schreiben soll, um \.(css|js)$
match zu invertieren. Oder gibt es eine andere Möglichkeit, dies zu tun?
UPDATE Basierend auf dieser Frage habe ich eine Lösung gefunden, die funktioniert:
%Vor% Leider kann ich keinen Weg finden, den Punkt \.
außerhalb der Klammern zu belassen. Aber diese Lösung ist immer noch gut für mich.
Als eine Randnotiz enthalten alle anderen Dateien solche, die überhaupt keinen Dateinamen haben, wie http://example.com/
.
Basierend auf dieser Frage habe ich eine Lösung gefunden, die funktioniert:
%Vor% Leider kann ich keinen Weg finden, den Punkt \.
außerhalb der Klammern zu belassen. Aber diese Lösung ist immer noch gut für mich.
Sie sollten bis zum Ende der Zeichenfolge nach der echten Dateierweiterung suchen (das ist die letzte, nicht Punkt enthaltende Teilzeichenfolge)
%Vor%Erläuterung:
.+\.
Suchen Sie gierig nach der ganzen Zeichenfolge, um den letzten Punkt zu finden. (?!(css|js)$)
Überspringe alle .css
oder .js
, die bis zum Ende der Zeile enden (behalte aber zB .jsx
) [^\.]+?$
erhält den Erweiterungsteil (keine Punkte bis zum Ende der Zeichenkette) Sie können das versuchen.
%Vor% Die erste Gruppe .+?
erhält den Dateinamen und die zweite negative Vorschau Gruppe ?!(css$|js$)
prüft, ob die Dateiendung nicht css oder js ist. Dies stimmt nur mit Dateien überein, die keine .css- oder .js-Erweiterungen haben. Sie können das erste und das letzte ersetzen. mit einer Zeichenklasse, die auf den erlaubten Dateinamen-Zeichen basiert.
Bearbeitet: Dies entspricht test.cssx oder test.jxabc