从 .htaccess 中的文件指令中排除图像格式

从 .htaccess 中的文件指令中排除图像格式

如果这个问题太简单或问错了地方,请见谅,但我想获取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。如何排除图像格式?

答案1

您的正则表达式匹配以.gif, .jpg, .jpeg&结尾的文件.png结尾的文件,但您需要一个匹配除它们之外的所有内容的正则表达式。这可以通过负面前瞻正则表达式。摘自 Jan Goyvaerts 的正则表达式信息

如果你想匹配某个东西,而后面没有其他东西,那么负向前瞻是必不可少的。在解释字符类,本教程解释了为什么不能使用否定字符类来匹配qnot 后面跟着u。否定前瞻提供了解决方案:q(?!u)。否定前瞻构造是一对括号,左括号后跟问号和感叹号。在前瞻中,我们有简单的正则表达式u

因此在这里,您需要将 替换u为您的.*\.(gif|jpe?g|png)$,结果将类似于:

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

相关内容