
本文介绍在 wordpress 中通过 php 判断当前请求 url 是否包含 `/product-category/` 路径,并自动 301 重定向至 `/shop` 页面的完整实现方案,兼顾兼容性与安全性。
在 WordPress 开发中,有时需要根据 URL 路径中的特定关键词(如 product-category)触发重定向逻辑。例如,将所有形如 https://www.mysite.com/product-category/xxx 或 https://www.mysite.com/product-category/ 的请求统一跳转至 https://www.mysite.com/shop。虽然上述答案提供了基础思路,但存在明显缺陷:手动拼接 URL 易出错、未处理协议/端口边界情况、in_array() 误判(如 /my-product-category/ 也会被匹配)、且在 header.php 中执行重定向易导致“headers already sent”错误。
✅ 推荐做法:在主题的 functions.php 中使用 WordPress 原生钩子 template_redirect 安全执行重定向:
// 将以下代码添加到主题 functions.php 文件末尾(确保在 PHP 标签内)
function redirect_product_category_to_shop() {
// 获取当前请求的路径部分(不含域名和查询参数),更精准可靠
$request_uri = trim( $_SERVER['REQUEST_URI'] ?? '', '/' );
// 使用前缀匹配,避免误触(如 'my-product-category' 不会被匹配)
if ( strpos( $request_uri, 'product-category' ) === 0 ) {
$redirect_url = home_url( '/shop/' ); // 自动适配 HTTP/HTTPS 和站点地址
wp_redirect( $redirect_url, 301 );
exit;
}
}
add_action( 'template_redirect', 'redirect_product_category_to_shop' );? 关键说明:
Metafox 是一个企业内容管理系统,使用一个特别的模板系统,你可通过一些特定的设计和代码来轻松创建 Web 网站,内容存储在 SQL 关系数据库,通过 Web 进行管理,简单、快速而且高效。 Metafox 0.9.1 发布,该版本改用一种更棒的 URL 风格,实现了 RSS 源(可包含远端网站内容到 Metafox 段中),重定向老的访问密钥到新的密钥,增加 RotateAntispam 技
- strpos(..., 'product-category') === 0 确保只匹配以 product-category 开头的路径(如 /product-category/ 或 /product-category/shoes),排除 /my-product-category/ 等干扰;
- home_url('/shop/') 动态生成目标 URL,兼容多环境(本地开发、HTTPS 站点、子目录安装等);
- wp_redirect() 是 WordPress 官方推荐方式,自动处理响应头,比原生 header() 更安全;
- exit 必不可少,防止重定向后继续执行后续代码;
- 钩子 template_redirect 在模板加载前触发,是执行条件重定向的最佳时机,避免输出已开始导致的 header 错误。
⚠️ 注意事项:
- 切勿在 header.php 中使用 header() 手动跳转——此时 HTML 输出可能已开始,极易报错;
- 避免使用 curPageURL() 这类自定义函数拼接 URL,既冗余又易受服务器配置影响(如反向代理);
- 如需匹配更多关键词或支持正则,可扩展为 preg_match(),但简单前缀匹配已满足绝大多数场景;
- 生产环境部署后,建议使用浏览器无痕模式或 curl -I 验证返回状态码是否为 301 Moved Permanently。
此方案简洁、健壮、符合 WordPress 最佳实践,适用于任何基于标准 WordPress 路由机制的主题。









