在我们的网站上,我们根据用户的地理位置自动提供不同的内容。为了实现这一点,我们将带有主机 IP 地址的变量传递给我们的 fcgi 应用程序。
问题是,我们想服务全部搜索机器人的内容,所以我想专门针对这些情况传递不存在的 IP。
到目前为止,我已经想出了这块配置代码(只要 nginx 不知道“else”):
location / {
if ( $http_user_agent ~* Googlebot ) {
set $remote_addr_googled "0.0.0.0";
}
if ( $http_user_agent !~* Googlebot ) {
set $remote_addr_googled $remote_addr;
}
fastcgi_param REMOTE_ADDR $remote_addr_googled;
}
还有其他更有效的方法吗?
答案1
关键是要将 Googlebot 视为来自类似位置、IP 范围等的典型用户(即,不要将 Googlebot 视为来自其自己独立的国家/地区 - 这是隐藏身份)。
官方 Google 网站站长博客:Google 如何定义 IP 传送、地理位置和隐藏
更新:您可以使用nginx 嵌入 perl 模块对于 if/then/else 条件。