You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现WooCommerce /shop/ URL到自定义商店页的有效重定向

WooCommerce 默认商店页重定向自定义页面解决方案

原有方案失效原因排查

  • 你之前写的functions.php代码失效核心问题:exit();被写在了单行注释//的后面,属于注释内容没有执行,wp_redirect()执行后没有终止程序运行,页面会继续加载默认商店页的内容,重定向不生效。
  • .htaccess规则失效常见原因:你添加的301规则放在了WordPress默认伪规则的后面,WordPress的重写规则会优先匹配拦截请求,导致自定义规则没有触发;或是规则里的域名、路径和站点实际配置不一致。
  • 另外如果站点开启了页面缓存、CDN缓存,即使代码生效也会因为缓存了旧的shop页内容看不到跳转效果。

可行操作步骤

方案一:直接设置自定义页为WooCommerce官方商店页(推荐,无需重定向)

这个方法不用改任何代码、不用碰插件文件,兼容性最好,也没有跳转延迟:

  • 进入WordPress后台 → 「固定链接」设置页,直接点击「保存更改」刷新一次伪规则(不需要修改任何设置)
  • 进入WooCommerce设置页,找到「商店页面」的下拉选项,直接选择你已经创建好的自定义商店页面(也就是你要跳转的目标页)
  • 保存设置后,WooCommerce的所有默认商店链接会自动绑定到你自定义的页面,不需要额外跳转。

方案二:修正重定向代码(必须跳转时使用)

把你之前加在子主题functions.php的旧代码删掉,替换为下面的正确版本,加在文件最末尾即可:

// WooCommerce默认商店页重定向
function wpc_shop_url_redirect() {
    // 判断当前是否为WooCommerce默认商店归档页
    if ( is_shop() ) {
        // 跳转目标为自定义的/shop2/页面,301为永久重定向,临时跳转可改为302
        wp_redirect( home_url( '/shop2/' ), 301 );
        // 必须加exit终止程序,否则重定向不生效
        exit;
    }
}
add_action( 'template_redirect', 'wpc_shop_url_redirect' );

注意:代码加完后清空所有站点缓存(包括页面缓存插件、服务器缓存、CDN缓存)再测试。

方案三:修正.htaccess重定向规则

如果要使用.htaccess实现301跳转,需要把规则放在WordPress默认伪规则的最前面,不要写在# BEGIN WordPress和# END WordPress的标记块内(避免被WordPress更新固定链接时覆盖),参考写法:

# 301重定向/shop/到自定义商店页,替换为你的实际站点域名
Redirect 301 /shop/ https://你的站点域名/shop2/

# 以下为WordPress默认伪规则,请勿修改
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

注意:规则里的协议(http/https)、是否带www要和站点实际访问的域名完全一致,否则会匹配失败。


内容的提问来源于stack exchange,提问作者5150 Design

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.27 10:54:07