X 机器人标签 noindex 特定页面

bon*_*cal 4 apache wordpress .htaccess mod-rewrite noindex

我在我的网站 www.domain/privacy-policy/ 上有一个隐私政策页面,我想用 X Robots 标签对其进行索引。我试过下面的代码,但它不匹配

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

## Redirect HTTP to HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

RewriteRule ^privacy-policy - [env=NOINDEXFOLLOW:true]
Header set X-Robots-Tag "noindex, follow" env=NOINDEXFOLLOW

</IfModule>

# END WordPress
Run Code Online (Sandbox Code Playgroud)

为清楚起见,问题已被编辑为包含完整的 htaccess 文件。

MrW*_*ite 7

www.domain/privacy-policy/

正如您在指令中使用的那样,“privacy-policy”位于 URL 路径中,而不是查询字符串中。在.htaccess文件顶部附近尝试类似以下内容:

RewriteEngine On
RewriteRule ^privacy-policy - [env=NOINDEXFOLLOW:true]

Header set X-Robots-Tag "noindex, follow" env=NOINDEXFOLLOW
Run Code Online (Sandbox Code Playgroud)

但是,最好使用 mod_setenvif 而不是 mod_rewrite 来设置环境变量:

SetEnvIf Request_URI "^/privacy-policy" NOINDEXFOLLOW
Run Code Online (Sandbox Code Playgroud)

更新:由于您使用的是前端控制器(WordPress 指令),因此RewriteRule设置环境变量的指令需要放在.htaccess文件顶部,在 WP 指令之前。通过将此指令定位在 WP 指令之后,它根本不会被处理。(如果您愿意,SetEnvIfandHeader指令可以稍后出现在文件中。)

但是,由于您使用的是前端控制器并将所有请求重写为index.php,因此NOINDEXFOLLOW未在您看到的请求中设置该变量。重写index.phpApache后,将此更改为REDIRECT_NOINDEXFOLLOW( REDIRECT_prefix),这就是您需要在Header指令中检查的内容。所以,总结一下:

SetEnvIf Request_URI "^/privacy-policy" NOINDEXFOLLOW
Header set X-Robots-Tag "noindex, follow" env=REDIRECT_NOINDEXFOLLOW
Run Code Online (Sandbox Code Playgroud)

(不太直观。)

如果您使用该RewriteRule指令来设置NOINDEXFOLLOW环境变量,那么它必须出现在文件的开头。