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

PHP含空格与连字符的URL重写:实现SEO友好URL技术问询

实现SEO友好URL(含连字符保留与分类匹配)

一、.htaccess 重写规则

先确保服务器开启了mod_rewrite模块,然后在/catalog/parts/目录下创建.htaccess文件,添加以下规则:

RewriteEngine On
# 仅当请求的不是真实文件/目录时触发重写
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 把URL路径部分作为cat参数转发到index.php
RewriteRule ^(.*)$ index.php?cat=$1 [L,QSA]

这条规则会把example.com/catalog/parts/hex-bolt这类请求,转发到index.php并将hex-bolt作为cat参数传递。QSA参数用于保留原URL中的其他查询参数(如果有的话)。

二、PHP 处理逻辑

1. 生成SEO友好URL(链接生成阶段)

要生成符合要求的URL,需要把原分类名称转换成标准化的slug:

  • 空格替换为连字符-
  • 保留分类本身自带的连字符
  • 统一转小写
  • (可选)清理特殊字符、合并连续连字符

示例转换函数:

function makeCategorySlug($categoryName) {
    // 替换空格为连字符
    $slug = str_replace(' ', '-', $categoryName);
    // 转小写
    $slug = strtolower($slug);
    // 移除字母、数字、连字符之外的多余字符
    $slug = preg_replace('/[^a-z0-9-]/', '', $slug);
    // 合并连续的多个连字符为单个
    $slug = preg_replace('/-+/', '-', $slug);
    return $slug;
}

// 测试示例
echo makeCategorySlug('Hex Bolt'); // 输出 hex-bolt
echo makeCategorySlug('U-Bolt'); // 输出 u-bolt
echo makeCategorySlug('Tension Control Bolt'); // 输出 tension-control-bolt

建议在数据库的分类表中新增slug字段,提前生成并存储每个分类的唯一slug——这样既不用实时转换,也能避免不同分类生成重复slug的冲突(比如U Bolt和U-Bolt如果不处理会生成相同slug,可在后台创建分类时检查slug唯一性)。

2. 处理请求并查询分类

用户访问SEO URL时,PHP从$_GET['cat']获取slug,直接用slug查询数据库的slug字段即可,不要尝试把连字符还原为空格——因为原分类自带的连字符和空格转的连字符无法区分,还原后会导致查询错误。

示例查询代码(注意用预处理语句防SQL注入):

if (isset($_GET['cat'])) {
    $slug = $_GET['cat'];
    
    // 初始化PDO连接(替换为你的数据库信息)
    $pdo = new PDO('mysql:host=你的主机;dbname=你的数据库', '用户名', '密码');
    $stmt = $pdo->prepare("SELECT * FROM categories WHERE slug = ?");
    $stmt->execute([$slug]);
    $category = $stmt->fetch(PDO::FETCH_ASSOC);
    
    if ($category) {
        // 找到分类,执行页面逻辑
        echo "当前分类:" . $category['name'];
    } else {
        // 分类不存在,返回404
        http_response_code(404);
        echo "分类不存在";
    }
} else {
    // 无cat参数,显示分类列表或首页
    echo "分类列表";
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 11:08:13