如何实现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
相关产品推荐
相关产品推荐

