Shopify缺陷被黑,我是产品经理会这样设计!
眼中脚下路,心中要有宏图。大家好,我是跨境男孩Riven。
以下内容是Riven@跨境男孩原创内容,本人对此内容依法享有著作权,未经许可禁止转载和引用。
继上篇文章:*Shopify卖家必看,你的网站99.9%已经被黑了!
“左右为难”的Shopify SEO 产品经理?国外的”月亮”不一定”圆”。
写个续篇,聊聊关于Shopify更多有趣的事情。不仅会指出问题、Shopify产品经理的原设计思路,还会说下我的优化方案。见下图大纲。
图片来源:Riven
1 说在前面
我前天发布文章后,在独立站社群中卖家们大量转发,也有数十家媒体和服务商转载,非常重视。
在此,感谢大家对内容的认可!
图片来源:Riven
独立站商家在自查后发现,自己的网站基本都存在 collections/vendors?q= 的URL被黑的问题。
上篇文章也说过,只有少数商家可能未出现该问题,是由于新网站DA低,被Google发现、收录和审查内容等,会需要更多时间。换而言之,如果你的网站没有被黑,可能要自我反思了。
Shopify论坛中可以发现,其实早在2个月前,Shopify官方人员就收到此反馈,出了初步解决方案。但是还得靠商家自己去发现,并且case by case处理。
Shopify目前还未从产研的角度思考,评估缺陷影响范围和严重程度,应如何解决数百万商家SEO问题。
因为这类垃圾URL收录,会严重影响品牌或店铺的声誉,Google对站点的审查,会影响SEO和用户体验。
我认为Shopify并不应放任黑客钻漏洞,去黑商家的站点;或者让商家自查然后通过各种改代码方式去修复,毕竟不是所有的商家都有SEO技术基础等。应该是从产品层面解决根本问题。
2 为什么我认为是Shopify设计缺陷?
可能会有人抬杠,说我是在黑Shopify?
说这不是Shopify的设计缺陷,而认为是GoogleBot对动态参数URL抓取的问题,不可避免?
真的不可避免吗?
我在上篇文章开头就说过,黑谁没那个必要,只是觉得有必要给Shopify商家提个醒。
就问你两个问题,如果思考清楚就会有所发现:
1)为什么Shopify独立站商品搜索场景下,同样是搜索动态URL,却不存在此问题?
2)为什么Amazon在商品分类页搜索产品场景下,同样是搜索动态URL,却不存在垃圾链接被利用收录的问题?
— —- —- — 此处分割线,思考时间。
接着,说下个人对这两个问题的拙见:
2.1 Shopify 搜索动态URL设计策略
https://www.example.com/search?q=jewelry
https://www.example.com/search?q=jewelry&page=2
其中q参数后面会跟上用户搜索的关键词,如果有分页可能还会有&page=参数
没有被黑帽SEOer利用的根本原因是:Shopify给每个商家的内置的robots.txt文件中,加入了 Disallow: /search
这也是为什么上篇文章,我也说了其中4.3的编辑Robots.txt协议解决方案
2.2 Amazon 搜索动态URL设计策略
Amazon将所有类目下的关键词使用动态URL设计,定义了k和page动态参数,并且分别维护相关关键词库数据;
将用户经常查询的与品类相关的关键词,进行管理维护,在URL后面可以跟内置的相关关键词;
比如 baby toys、moissanite rings品类:
https://www.amazon.com/baby-toys/s?k=baby+toys
https://www.amazon.com/baby-toys/s?k=baby+toys&page=2
https://www.amazon.com/moissanite-rings/s?k=moissanite+rings
https://www.amazon.com/moissanite-rings/s?k=moissanite+rings&&page=2
如果用户搜索关键词与内置或匹配项能够匹配,则快速返回数据,并且该动态URL支持被Google等搜索引擎索引;
比如你在Google 搜索 “moissanite rings Amazon”时,SERP会出现类似以下的链接:
https://www.amazon.com/moissanite-rings/s?k=moissanite+rings
https://www.amazon.com/moissanite-engagement-rings/s?k=moissanite+engagement+rings
https://www.amazon.com/moissanite-ring/s?k=moissanite+ring
https://www.amazon.com/moissanite-ring/s?k=moissanite+ring&page=6
https://www.amazon.com/Moissanite/s?k=Moissanite
https://www.amazon.com/moissanite-ring/s?k=moissanite+ring&page=2
https://www.amazon.com/moissanite-ring/s?k=moissanite+ring&page=3
Google SERP出现的,都是正规的Amz的查询URL和分页的URL等;
图片来源:Google
进入页面后,在Amazon站内,如果用户搜索关键词与Amazon内置的不匹配,则将该分类的URL搜索重定向到全局搜索;
(比如我在https://www.amazon.com/moissanite-ring/s?k=moissanite+ring 这个页面搜索 ” moissanite ring test “
会重定向此页面:https://www.amazon.com/s?k=moissanite+ring+test)
同时Amazon在Robots.txt文件中做了特殊处理。( https://www.amazon.com/robots.txt )
也就不难理解,为什么黑帽SEOer不能利用这个k动态参数创造大量的伪Amazon URL,为其输送流量利益。
图片来源:Amazon
为什么说是Shopify设计缺陷?请继续阅读:
3“左右为难”的Shopify产品经理
通过以上的分析,以及Shopify的页面的canonical标签等信息,可以看得出来:
图片来源:Google
1)Shopify搜索域的产品经理,出发点想在C端出现搜索Vendors(厂商)字段时,能筛选出对应的商品;并且分析在线商店的热门搜索词,提供分析报告给商家等;
图片来源:Shopify
2)Shopify SEO产品经理,并没有将Vendors搜索的URL,与Search 的URL一样,直接内置在robots.txt中,进行disallow处理;出发点是想学习Amazon的SEO设计策略,希望通过动态q参数,帮助Shopify商家带来更多URL的收录和曝光,更多SEO流量等;
可能你又会问:为什么Shopify产品经理对于同样的搜索功能,/search?q= 与 /collections/vendors?q= ,却要设计两种方案 ?
我理解的是,因为使用场景不同:/search?q= 是网站全域资源对象的搜索,关键词数据层面不好处理;但vendors是基于厂商维度的系列产品,方便管理,可以创建更多的URL,带来vendors关键词的SEO流量;
给大家估算一个数据,就很好理解:若Shopify 100万商家独立站,平均每个站点200个SPU,分别由5个厂商供货,那么平均每个vendors链接按分页器分页后(每页16个商品),会有 200/5/16= 2.5(3页);
最后预计能被Google多收录 100万*5*3 = 1500万 Shopify商家的URL。
做得好的话,Vendors关键词在Google SERP下为商家带来的流量、以及对于Shopify的权威提升等,都是非常巨大的。
但是,对于Vendors后面带伪厂商关键词,导致搜索结果为空时的特殊场景,Shopify SEO产品经理,并没有与搜索域产品经理、和建站编辑器产品经理,前置沟通好,或者未探讨出更好的解决方案;
你看Shopify的【在线商店 -> 网站导航 】菜单-> 产品系列和搜索筛选器处、及Shopify Dawn官方主题就知道,默认是未创建及开启vendors的filter,
这会导致所有的商家,并未意识到C端存在Vendors的查询页面,最终被黑帽SEOer利用,创建数百万的”搜索结果为0″的伪页面,带来了负面影响。
图片来源:Shopify
可能又有人疑问,为什么其他filter没有出现钻空子的情况?那是因为:
1)其他动态参数(比如pf_t_colour、pf_t_material、pf_p_price等)都是在商家特定的URL Collection 的handle后面,黑帽SEOer不方便百万站点批量处理,这是其一原因;
2)另外对于这类filter,即使动态参数后面跟了错误的信息,该URL的SEO信息透出时,也不会默认取伪信息;这样给黑帽SEOer就带来不了价值,这是其二原因;
3)canonical规范化标签使用问题;其他动态参数与collections/vendors?q=页面的使用是不同的;
以上三点,是我认为的三个核心原因;当然可能还有其他原因。
为什么Shopify SEO产品经理会左右为难?
Shopify SEO产品经理出发点是好点,因为这样设计,可以为商家和Shopify平台本身带来巨大的SEO价值,但是还有其他因素阻碍:
1)canonical规范化标签与元标题,两个字段都与search vendors联动取值,看似完美,实则有缺陷,被人利用;但如果不联动,又不能实现”最初的梦想”,没有更佳的方案;
图片来源:Google
图片来源:Google
2)实际上Shopify的商家大都是使用的第三方主题,不一定都升级支持vendors的filter功能,很有可能会忽略掉;
3)需要跨域组织需求评审,拉通搜索域、商品域、建站域等多个产研中心,对齐SEO需求方案;
4)不是每个商家都具备编码能力,能够对robots.txt文件或者theme.liquid文件进行编码;
5)产品运营、市场、客户成功等部门,未能很好的支持赋能商家SEO,只能靠产品驱动等
同时,可能还有其他原因等。
最终,二权相害取其轻。Shopify选择了现在的设计方案。但实际上还有优化空间。
4 我是产品经理,我会这样设计
4.1 collections/vendors?q= 参数搜索优化
对于https://example.com/collections/vendors?q= 这个动态的查询页面,基于商家域的商品数据,vendors数值进行内置;
仅当搜索/筛选vendors关键词完全匹配时,才存在该动态URL页面,且允许让Google收录;
如果搜索搜索vendors关键词,不能完全匹配时,则重定向进入通用搜索页(/products/search?q=),且不允许Google收录;
— 此需求需要拉通Shopify的商品域、搜索域的产品同学,对齐SEO需求:
另外,关于动态参数URL设计的最佳实践,感兴趣可以阅读我往期的文章:跨境男孩 | 独立站URL参数处理SEO指南
4.2 对collections/vendors伪静态URL优化
对collections商品集资源对象下,handle为vendors进行内置,不允许商家创建;
图片来源:Shopify
方案一:(推荐)
将这个页面C端透出站点所有的商品,可以正常访问;
案例:https://www.jcojewellery.com/collections/vendors (正常,为全部产品数据,这个网站很有可能做了二开)
图片来源:Google
https://www.oxford.shop/collections/vendors (无产品或供应商数据)
方案二:
将每个Vendors页面静态化,做集合页,可以正常访问;方便GoogleBot抓取和索引
4.3 支持商家优化vendors URL的SEO Meta信息
目前Shopify的逻辑是,collections/vendors?q= 页面SEO title是默认取的“供应商 – PageN- 店铺名称” 、元描述取的页面前面的内容,并根据终端设备SERP规则截取字符;需规划通过SEO插件优化SEO信息。
5 Shopify SEO未来的优化方向
基于以上分析,Shopify主站大概率不会在robots.txt文件中加disallow 或在theme.liquid文件中head中加noindex;
Shopify可能会考虑使用我说的4.1、4.2及4.3优化方案。
同时Shopify的市场、论坛、生态合作伙伴等,都需要配合同步相关信息。
案例站点:https://www.jcojewellery.com/collections/vendors
6 聊聊该缺陷的商家自行解决方案
6.1 不需要vendors搜索页面索引
上篇文章*Shopify卖家必看,你的网站99.9%已经被黑了!已经讲过三种方案了,有商家反馈有点懵或者比较麻烦;
这里再补充个方案:核心逻辑就是,在该页面head中设置noindex,让Google等搜索引擎不要索引该页面,不给黑帽人员留空间。
重要提示:要使noindex规则生效,页面或资源不得被 robots.txt 文件阻止,并且爬虫必须可以访问它。如果页面被 robots.txt 文件阻止或爬虫无法访问该页面,则爬虫永远不会看到该noindex规则,并且该页面仍会出现在搜索结果中
如果使用了我上篇文章说的4.3方案,则不用采取这个方案了。
Google官方文档:https://developers.google.com/search/docs/crawling-indexing/block-indexing
这里我说下Shopify的操作步骤:
1)进入Admin – 在线商店 -模板页面,点击「编辑代码」按钮
2)在【布局】菜单下找到theme.liquid文件,在Head中加入noindex的代码即可
图片来源:Shopify
代码示例:
{%- if request.path == ‘/collections/vendors’ and collection.all_products_count == 0 -%}
“robots” content=“noindex, nofollow”>
{%- endif -%}
当你加了上面的代码后,可以使用Google URL 检查工具请求 Google 重新抓取页面,去获取noindex指令。或者你就只有慢慢等GoogleBot去发现了。
— — —
或者加入刷新页面和自动跳转至首页,加入以下代码:
{%- if request.path == ‘/collections/vendors’ and collection.all_products_count == 0 -%}
“robots” content=“noindex, nofollow”>
“Refresh” content=“0; url=’https://www.homepage.com'” />
{%- endif -%}
— — —
如果你根本不想使用此/collections/vendors页面功能,可以直接设置该页面的重定向至首页:
图片来源:Shopify
注意不要轻易使用301重定向,因为这是永久重定向,如果后续你要使用 /collections/vendors 功能时,可能会影响页面被Google收录、和权重。
6.2 想被Google收录正常的vendors URL
你需要具备编码能力,或者等Shopify官方按照我上面写的4.1-4.3等优化好;
或者抱有希望,那些黑帽不搞你的大站(但似乎不太可能)。
7 聊聊Amazon SEO启发
不得不说Amazon的SEO是真的牛逼。Shopify vendors查询q参数的动态URL设计,极大可能是参考的Amazon的策略。
但由于一个是电商平台,一个是建站SaaS及其他场景不同,导致Shopify产品左右为难,出现的设计漏洞,被黑帽SEOer利用。
Amazon其实除了这个动态参数URL设计策略外,还有其他做得比较好的SEO策略。
包含PLP和PDP页面 H标签、FAQ、结构化数据、多语言多站点SEO、本地化SEO等,感兴趣的可以用Google大法调研。
由于篇幅限制,后续我再做分析Amazon自动化SEO。
8 最后
最后,八卦下,其实早在2019年就有卖家反馈过此类问题,只是Shopify一直没重视,或者找到良好的解决方案,最终才被黑帽SEOer发现漏洞,出现数百万Shopify站点受影响。
图片来源:Shopify
在2021年8月16日,因为Shopify故障,我说过:Shopify才是最大的风险。
图片来源:Riven
还有钓鱼邮件提醒,商家处理邮件时,需注意域名信息,比如shoplfy.com、sh0pify.com等
图片来源:Riven
以上,感谢阅读!