Magento站点如何仅删除URL结构中的子分类路径段
Magento移除URL中子分类段的可行实现方案
方案1:后台原生配置调整(优先推荐,无需改代码)
- 登录Magento后台,依次进入
商店 > 配置 > 目录 > 目录 > 搜索引擎优化路径 - 找到 “分类URL后缀” 和 “产品URL后缀” 配置项,先确认当前设置和你的需求匹配
- 找到 “为类别URL使用父类别路径” 选项,将值设置为
否 - 保存配置后,进入
系统 > 缓存管理,清空全部缓存 - 进入
营销 > SEO和搜索 > URL重写,批量重新生成分类、产品的URL(如果是Magento2.4+版本可以直接用命令行bin/magento catalog:url:rewrites:regenerate批量生成,避免后台操作超时)
注意:该方案只会对新生成的URL生效,原有已经生成的URL重写条目需要手动删除后再重新生成才会更新
方案2:自定义URL重写规则(适用于少量页面调整需求)
- 进入后台
营销 > SEO和搜索 > URL重写,点击添加重写按钮 - 重写类型选择 “自定义”,请求路径填写原路径
parent-category/sub-category/page,目标路径填写调整后的路径parent-category/page,重写类型选301永久重定向(对SEO友好) - 保存后清空缓存即可立即生效
该方案适合页面数量少的场景,页面量级超过100的话不推荐手动操作,容易出错
方案3:服务器层面重定向(无需修改Magento内核配置)
如果使用Nginx服务,在站点配置文件里添加如下规则:
rewrite ^/([^/]+)/[^/]+/([^/]+)$ /$1/$2 permanent;
如果使用Apache服务,在站点根目录的.htaccess文件里添加如下规则:
RewriteRule ^([^/]+)/[^/]+/([^/]+)$ /$1/$2 [R=301,L]
该方案优先级最高,修改后重启对应服务器即可生效,不会改动Magento内核的URL生成逻辑
方案4:自定义插件改写URL生成逻辑(适合有二次开发能力的场景)
可以通过自定义插件重写Magento\Catalog\Model\Product\Url类的getUrl()方法,或者监听catalog_product_url_rewrite生成前后的钩子,在生成URL的时候自动去掉子分类的路径段,调整后重新生成全站的URL重写即可适配全量页面。
该方案可以从根源调整URL生成逻辑,后续新增的产品、分类也会自动适配规则,无需重复操作
内容的提问来源于stack exchange,提问作者suhanshukla
相关产品推荐
相关产品推荐

