你需要Header set ....
指令,但要根据URL有条件地设置它。一种方法是使用mod\\u rewrite设置环境变量(例如。ROBOTS_INDEX
) 当满足URL条件时(对于要索引的URL),请使用env=
的参数Header
指令有条件地设置X-Robots-Tag
此环境变量未设置时的标题。
我发现用这种方式表达逻辑更容易,而不是检查不想索引的URL(并设置相反的env var,例如。ROBOTS_NOINDEX
). 以及在设置var时设置响应头。尽管这种方法可能值得进一步研究。
您需要使用mod\\u rewrite而不是mod\\u setenif来设置env var,因为您需要检查URL的查询字符串部分。(TheSetEnvIf
指令只允许您检查URL的URL路径部分。)
复杂的是,这些参数可以是任意顺序,并且可能有其他不相关的参数需要忽略。URL参数值不能混合,即。para_a=1¶_b=2
大概是“无索引”的情况。
设置环境变量ROBOTS_INDEX
请求您想要索引的URL时。请注意,这些mod\\u rewrite指令必须在WordPress前端控制器之前执行。即在# BEGIN WordPress
部分
# INDEXABLE: Any request that does not include a query string
# Includes /example-page (no query string at all)
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^ - [E=ROBOTS_INDEX:1]
# INDEXABLE: /example-page?para_a=1¶_b=1 (parameters in any order)
RewriteCond %{QUERY_STRING} (^|&)para_a=1($|&)
RewriteCond %{QUERY_STRING} (^|&)para_b=1($|&)
RewriteRule ^example-page$ - [E=ROBOTS_INDEX:1]
# INDEXABLE: /example-page?para_a=2¶_b=2 (parameters in any order)
RewriteCond %{QUERY_STRING} (^|&)para_a=2($|&)
RewriteCond %{QUERY_STRING} (^|&)para_b=2($|&)
RewriteRule ^example-page$ - [E=ROBOTS_INDEX:1]
有条件地设置
X-Robots-Tag
当环境变量未设置时的标题。请注意
!
env变量上的否定前缀。
Header set X-Robots-Tag "noindex" env=!ROBOTS_INDEX
然而,我确实觉得有一种更好的“WordPress”方法可以做到这一点,而不必使用
.htaccess
?