.htaccessのFilesディレクティブから画像形式を除外します
この質問が単純すぎるか間違った場所にある場合はお詫びしnoindex
ますが、サーバー上の画像ファイル以外のすべてにしたいと思います。WordPressをヘッドレスCMSとして使用していますが、一部の画像はサーバーから直接供給されており、インデックスを作成したいのですが、それ以外はインデックスを作成する必要はありません。
私は次のことを試しましたが、構文が間違っているか、意味的にいくつかのルールに違反しています。
#<Files ~ "\.(?!png|jpe?g|gif)$"> # Header set X-Robots-Tag "noindex" #</Files> #<FilesMatch ".+\.(gif|jpe?g|png)$">
Header set X-Robots-Tag "noindex"
#</FilesMatch>
現在設定されているため、すべてがnoindexに設定されています。画像形式を除外するにはどうすればよいですか?
回答
3 EsaJokinen
あなたの正規表現は、で終わるファイルにマッチし.gif
、.jpg
、.jpeg
&.png
、しかし、あなたはすべてが、それらにマッチする正規表現を必要としています。これは、負の先読み正規表現で可能です。Jan Goyvaertsのregular-expressions.infoから:
ネガティブな先読みは、他の何かが続かないものと一致させたい場合に不可欠です。このチュートリアルでは、文字クラスを説明するときに、否定された文字クラスを使用して、
q
その後にu
。が続かないものと一致させることができない理由を説明しました。負の先読みは解決策を提供します:q(?!u)
。負の先読み構造は、括弧のペアであり、開始括弧の後に疑問符と感嘆符が続きます。先読みの中には、些細な正規表現がありu
ます。
だからここに、あなたは置き換えたいu
あなたと.*\.(gif|jpe?g|png)$
のようなもので、その結果、:
<FilesMatch "^(?!.*\.(gif|jpe?g|png)$).*$">
Header set X-Robots-Tag "noindex"
</FilesMatch>