有一个解决方案,但就像其他解决方案一样,由 Google 将其解释为根据自己的意愿进行伪装和禁止。这是一个很长的问题,可能需要进一步修改才能为您的案例工作。(提前抱歉的长度)
设置
为了这个例子,让我们这么说:
- 网站:
www.thesite.com
和
- ImageURL 基础:
images.thesite.com
(但 ImageURL 基础很容易www.thesites.com/wp-content/uploads
)
目标
我们的目标是做到这一点,(1)如果谷歌图像搜索请求全尺寸图像,则仅显示带有水印/叠加层的图像,并且(2)不要破坏以前工作的东西。
解决方案
所以理论上的解决方案如下。
1)检查用户代理,如果它包含,Googlebot
则提供“陷阱”URL。陷阱 URL 是您当前的图像 URL,但稍有更改,因此您可以区别对待它,而不是当前的正常 URL:
http://images.thesite.com/wallpapers/awesome.jpg
您应该为 Googlebots 打印:
http://cacheimages.thesite.com/wallpapers/awesome.jpg
(cacheimages
你想要的东西在哪里)
2)现在是主菜;您应该能够将请求定位到http://cacheimages.thesite.com/
并具有如下行为的脚本:
If the request comes from a bot (check user-agent headers)
Then serve the normal image without watermark
Else (if the request seems to be from a normal user)
Then check the referer: If it's from google (but NOT http://www.google.com/blank.html)
Redirect to the Post of the image (Note 1.)
Else if the refer is your site
Show the raw normal image
Else (any other referer, including http://www.google.com/blank.html)
Show watermarked image (Note 2.)
注 1:当人们点击“查看原始图片”或图片本身时会发生这种情况
注意 2:当人们尝试从谷歌图片搜索结果中查看全尺寸图片时会发生这种情况(如果他们以某种方式到达图片的陷阱 url)
3)如果用户代理是 Googlebots,您可以 HTTP 将旧图像重定向到新的 ImageURL 基础,因此覆盖/水印技巧可以更快地开始处理旧图像(如果您使用图像子域,甚至可以使用 Google 网站管理员工具)并且您是确保保留 SEO 汁液。
进一步行动
如果你想认真一点,你可以做更多的改变。
- 而不是显示带水印的图像重定向到更动态
http://cacheimages.thesite.com/preview?p=/wallpapers/awesome.jpg&r=23535
的 url 或更现代地使用 HTTP 标头来无索引:
X-Robots-Tag: noindex
- 当然缓存带水印的图像
- 检查
Accept
http 标头以查找我没有想到的情况,并相应地提供图像或重定向图像帖子。
笔记
您可能还需要考虑国际流量,而不是google.com
您想检查google.[a-z-\.]+/
结论
这可以适用于任何系统,我是为在子域上有图像的系统做的,所以它可能不会与 wordpress 等其他系统完全相同。另外,我相信谷歌会改变他们的图像在接下来的几个月中搜索以解决此问题。
可以在Github上找到该想法的未经测试的示例实现。
免责声明
这尚未经过彻底测试,您可能会被禁止,它仅用于研究和教育目的。我不对任何损坏等负责。