Schließen Sie Bildformate von der Datei-Direktive in .htaccess aus

Oct 31 2020

Entschuldigung, wenn diese Frage zu einfach oder am falschen Ort ist, aber ich möchte noindexalles außer Bilddateien auf dem Server. Ich verwende WordPress als kopfloses CMS, aber einige Bilder werden direkt von meinem Server bezogen und ich möchte immer noch, dass sie indiziert werden, während alles andere nicht indiziert werden muss.

Ich habe mit Folgendem experimentiert, aber meine Syntax ist falsch oder ich verstoße semantisch gegen einige Regeln:

#<Files ~ "\.(?!png|jpe?g|gif)$"> # Header set X-Robots-Tag "noindex" #</Files> #<FilesMatch ".+\.(gif|jpe?g|png)$">
    Header set X-Robots-Tag "noindex"
#</FilesMatch>

Wie es derzeit eingerichtet ist, ist alles auf noindex gesetzt. Wie schließe ich Bildformate aus?

Antworten

3 EsaJokinen Oct 31 2020 at 09:43

Ihre regulären Ausdruck Matches Dateien mit der Endung .gif, .jpg, .jpeg& .png, aber man braucht einen regulären Ausdruck, der alles , aber sie paßt. Dies ist mit einem negativen regulären Lookahead- Ausdruck möglich. Aus Jan Goyvaerts ' regulären - Ausdrücken.info :

Ein negativer Lookahead ist unverzichtbar, wenn Sie etwas zuordnen möchten, dem nichts anderes folgt. Bei der Erklärung Zeichenklassen , erklärt dieses Tutorial , warum Sie nicht eine negierte Zeichenklasse verwenden können , um eine Übereinstimmung qmit einem nicht gefolgt u. Negativer Lookahead bietet die Lösung : q(?!u). Das negative Lookahead-Konstrukt ist das Klammerpaar, wobei auf die öffnende Klammer ein Fragezeichen und ein Ausrufezeichen folgen. Im Lookahead haben wir den trivialen regulären Ausdruck u.

Hier würden Sie also das durch uIhr ersetzen .*\.(gif|jpe?g|png)$, was zu etwas führt wie:

<FilesMatch "^(?!.*\.(gif|jpe?g|png)$).*$">
    Header set X-Robots-Tag "noindex"
</FilesMatch>