更正 nginx 配置以防止索引某些文件夹

Correct nginx configuration to prevent indexing of some folders

我正在使用以下 Nginx 配置来防止在我使用 x-robots tag

时对某些文件夹中的内容编制索引
location ~ .*/(?:archive|filter|topic)/.* {
    add_header X-Robots-Tag "noindex, follow";      
}

内容仍保留在索引中,但我无法调试 Nginx 配置。

我的问题:我使用的配置是否正确,我是否应该等到 googlebot 重新抓取内容并对内容取消索引?还是我配置有误?

你写的配置是正确的。我要注意一点(假设您的配置是标准配置):

只有结果码为200、201、204、206、301、302、303、304、307时才会输出X-Robots-Tag(例如内容匹配磁盘文件,发出重定向, ETC。)。所以如果你有 /archive/index.html,点击 http://yoursite.com/archive/ 将得到 header。如果 index.html 不存在 (404),您将看不到标签。

always 参数将为所有响应代码输出 header,假设位置块已处理:

location ~ .*/(?:archive|filter|topic)/.* {
    add_header X-Robots-Tag "noindex, follow" always;      
}

另一个选项将保证 header 在 URI 匹配时输出。这对于可能无法处理位置块的情况很有用(由于 short-circuiting,例如 return 或重写时的 last 等):

http {
    ...
    map $request_uri $robot_header {
        default "";
        ~.*/(?:archive|filter|topic)/.* "noindex, follow";
    }

    server {
        ...
        add_header X-Robots-Tag $robot_header;
        ...
    }