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

PHP中匹配URL的/page/1并重定向至主URL的正则规则实现问题

PHP分页URL重定向优化方案

需求明确

需要匹配分类分页URL(如/product-category/womens-jackets/page/1)中的/page/1片段,匹配成功后301永久重定向到对应主分类URL(如/product-category/womens-jackets),解决重复页面的SEO问题。

现有代码的问题

你之前的代码存在两个关键问题:

  1. 正则/\/page\/[1]+\/?$/会误匹配/page/111这类无效分页,且未限定是分类页面下的分页,可能影响其他URL;
  2. preg_replace中的$1无意义,因为正则没有捕获组,无法正确截取主URL。

结合现有规则的实现方案

我们可以把你定义的分类正则和page1判断结合,实现精准匹配和重定向:

$root = 'https://your-domain.com'; // 替换为实际站点根域名
$uri = $_SERVER['REQUEST_URI'];

// 1. 优先处理分类下的page1,精准匹配并重定向
if (preg_match('#^/product-category/(?<shop>[\w-]+)/page/1/?$#', $uri, $matches)) {
    $redirectUrl = "/product-category/{$matches['shop']}";
    // 301永久重定向,传递SEO权重
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: {$root}{$redirectUrl}");
    exit();
}
// 2. 处理非page1的分类分页
elseif (preg_match('#^/product-category/(?<shop>[\w-]+)/page/(?<page>\d+)/?$#', $uri, $matches)) {
    $page = (int)$matches['page'];
    if ($page > 1) {
        // 这里写你的分页逻辑,比如查询对应页的商品数据
        echo "分类 {$matches['shop']} 第 {$page} 页内容";
    } else {
        // 兜底:防止page=0等异常值,直接重定向到主分类页
        header("HTTP/1.1 301 Moved Permanently");
        header("Location: {$root}/product-category/{$matches['shop']}");
        exit();
    }
}
// 3. 处理主分类页(默认显示第1页内容)
elseif (preg_match('#^/product-category/(?<shop>[\w-]+)/?$#', $uri, $matches)) {
    echo "分类 {$matches['shop']} 第 1 页内容";
}
// 4. 其他URL处理(如404)
else {
    header("HTTP/1.1 404 Not Found");
    echo "页面不存在";
}

更优实现建议

  1. 提取正则为常量:方便统一维护,避免重复编写正则
define('REGEX_CATEGORY_PAGE1', '#^/product-category/(?<shop>[\w-]+)/page/1/?$#');
define('REGEX_CATEGORY_PAGINATED', '#^/product-category/(?<shop>[\w-]+)/page/(?<page>\d+)/?$#');
define('REGEX_CATEGORY_MAIN', '#^/product-category/(?<shop>[\w-]+)/?$#');

之后判断时直接使用常量即可,代码更整洁。

  1. 使用301重定向:一定要用HTTP/1.1 301 Moved Permanently而不是默认的302,这样搜索引擎会把原页面的权重转移到新页面,避免重复内容被降权。

  2. 严格校验分页参数:把$page转为整数,防止SQL注入或非法参数攻击。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 21:58:16