.htaccessのFilesディレクティブから画像形式を除外します

Oct 31 2020

この質問が単純すぎるか間違った場所にある場合はお詫びし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 Oct 31 2020 at 09:43

あなたの正規表現は、で終わるファイルにマッチし.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>