X Robots Tag noindex 特定页面
X Robots Tag noindex specific page
我的网站 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
为清楚起见,问题已被编辑为包含完整的 htaccess 文件。
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
但是,最好使用mod_setenvif而不是mod_rewrite来设置环境变量:
SetEnvIf Request_URI "^/privacy-policy" NOINDEXFOLLOW
更新: 由于您使用的是 前端控制器 (WordPress 指令),RewriteRule
指令用于设置环境变量需要放在 .htaccess
文件的顶部,在 WP 指令之前。通过将此指令放在 WP 指令之后,它根本不会得到处理。 (如果您愿意,SetEnvIf
和 Header
指令可以稍后出现在文件中。)
但是,由于您正在使用 前端控制器 并将所有请求重写为 index.php
,因此未在请求中设置 NOINDEXFOLLOW
变量你看到了。重写为 index.php
后,Apache 将其更改为 REDIRECT_NOINDEXFOLLOW
(REDIRECT_
前缀),这就是您需要在 Header
指令中检查的内容。所以,总结一下:
SetEnvIf Request_URI "^/privacy-policy" NOINDEXFOLLOW
Header set X-Robots-Tag "noindex, follow" env=REDIRECT_NOINDEXFOLLOW
(不太直观。)
如果您使用 RewriteRule
指令来设置 NOINDEXFOLLOW
环境变量,那么它必须出现在文件的开头。
我的网站 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
为清楚起见,问题已被编辑为包含完整的 htaccess 文件。
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
但是,最好使用mod_setenvif而不是mod_rewrite来设置环境变量:
SetEnvIf Request_URI "^/privacy-policy" NOINDEXFOLLOW
更新: 由于您使用的是 前端控制器 (WordPress 指令),RewriteRule
指令用于设置环境变量需要放在 .htaccess
文件的顶部,在 WP 指令之前。通过将此指令放在 WP 指令之后,它根本不会得到处理。 (如果您愿意,SetEnvIf
和 Header
指令可以稍后出现在文件中。)
但是,由于您正在使用 前端控制器 并将所有请求重写为 index.php
,因此未在请求中设置 NOINDEXFOLLOW
变量你看到了。重写为 index.php
后,Apache 将其更改为 REDIRECT_NOINDEXFOLLOW
(REDIRECT_
前缀),这就是您需要在 Header
指令中检查的内容。所以,总结一下:
SetEnvIf Request_URI "^/privacy-policy" NOINDEXFOLLOW
Header set X-Robots-Tag "noindex, follow" env=REDIRECT_NOINDEXFOLLOW
(不太直观。)
如果您使用 RewriteRule
指令来设置 NOINDEXFOLLOW
环境变量,那么它必须出现在文件的开头。