Magento 2默认开启规范链接时修改特定页面规范链接的问题
Magento 2 分类Canonical链接配置问题解答
背景说明
我们已在Magento 2后台的Stores -> Catalog -> SEO路径下,将"Use Canonical Link Meta Tag For Categories"和"Use Canonical Link Meta Tag For Products"设置为"Yes",整体运行正常。但存在特殊场景:为优化用户体验,头部菜单设置了两条不同路径的同分类导航,示例如下:
- Shop by Category -> Aquariums -> Saltwater Fish
- Shop by Fish -> Saltwater Fish -> Aquariums
由于前期开发未避免重复页面,现在需要将"Shop by Fish"路径下的页面Canonical链接指向对应的"Shop by Category"页面,以规避重复内容问题,现针对两个疑问解答如下:
疑问1:修改XML文件中的链接后,默认Canonical链接是否会覆盖修改?
这取决于你修改XML的具体方式:
- 若通过对应分类的布局XML,使用
referenceBlock name="head.canonical"并设置新的URL,或者调用setUrl方法指定自定义链接,这种情况下你的自定义配置会覆盖系统默认生成的Canonical链接,页面只会显示你设置的自定义链接。 - 若只是简单添加新的canonical标签而不替换原块,页面会出现两个Canonical标签,搜索引擎的抓取优先级不确定,这种方式不推荐。
更稳妥的方式是通过插件重写Magento\Catalog\Block\Category\View类中的getCanonicalUrl方法,直接替换默认的链接生成逻辑,确保自定义链接不会被默认规则覆盖。
疑问2:将"Use Canonical Link Meta Tag For Categories"从"Yes"改为"No",是否会重置并删除所有Canonical链接?
- 系统默认生成的分类Canonical链接会被全部移除:这个开关控制的是Magento核心模块自动生成分类页面Canonical标签的逻辑,改为"No"后,系统将不再生成默认的Canonical链接。
- 自定义添加的Canonical链接不受影响:如果你之前通过自定义XML、插件或主题模板手动添加了Canonical标签,这些自定义内容不会被删除,仍会正常显示在页面上。
内容的提问来源于stack exchange,提问作者Jack Holliday
相关产品推荐
相关产品推荐

