为具有htAccess的“动态WordPress页面”设置自定义搜索引擎索引

时间:2019-10-03 作者:proseosoc

我正在搜索数小时,但没有找到我的需求代码,我的需求可以通过htaccess完成吗?

要求-页面的这些URL应该由Google索引:

  1. example.com/example-page
  2. example.com/example-page?para_a=1&para_b=1
  3. example.com/example-page?para_a=2&para_b=2
要求-但是这个包含URL中所有其他参数的页面不应该被谷歌索引。

我找到了以下代码部分:

<If "%{QUERY_STRING} =~ /foo=bar/">
...
</If>

<If "req(\'Host\') != \'www.wooga.com\'">
...
</If>

<Directory /var/www/html/>
...
</Directory>

Header set X-Robots-Tag "noindex"
我不知道哪种代码组合适合我。如果有人知道,请告诉我。谢谢

1 个回复
最合适的回答,由SO网友:MrWhite 整理而成

你需要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&para_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&para_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&para_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?

相关推荐

HTAccess重定向301不起作用。如何调试?

我将一个旧站点转移到wordpress。问题是,网络中有一些链接来自旧页面,需要转移到新的slug。由于我不想只为了简单的静态重定向而向站点添加更多插件,我在<;IfModule mod\\U重写。c>中的截面。htaccess# END W3TC Browser Cache # BEGIN W3TC Page Cache core <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /