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

如何在同站点创建简洁URL?产品详情页URL优化问询

产品详情页URL优化实现方案

第一步:无需额外文件夹,通过index.php?id=xxx展示产品详情

直接修改根目录的index.php,加入参数判断逻辑,区分列表页和详情页:

<?php
// 检查是否传入产品ID参数
if (isset($_GET['id']) && trim($_GET['id']) !== '') {
    // 加载产品详情的逻辑
    $productId = $_GET['id'];
    // 示例:根据ID从数据库获取产品数据
    // $product = fetchProductFromDb($productId);
    // 输出详情页面内容
    echo "<h1>产品详情</h1>";
    // 补充产品信息展示代码
} else {
    // 原有的产品列表展示逻辑
    echo "<h1>产品列表</h1>";
    // 补充列表展示代码
}
?>

这样访问example.com/index.php?id=产品ID时,页面会自动切换到对应产品的详情页,无需创建额外的product文件夹和文件。

第二步:实现example.com/产品名称的简洁URL

这需要通过服务器的URL重写功能实现,分两种常见服务器环境说明:

Apache服务器(使用.htaccess)

  1. 在网站根目录创建.htaccess文件,添加以下重写规则:
RewriteEngine On
# 排除真实存在的文件和目录,避免重写干扰
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 将所有非文件/目录的请求转发到index.php,并传递产品别名参数
RewriteRule ^(.*)$ index.php?product_slug=$1 [L,QSA]
  1. 修改index.php的逻辑,改为通过product_slug(产品别名)查询产品:
<?php
if (isset($_GET['product_slug']) && trim($_GET['product_slug']) !== '') {
    $productSlug = $_GET['product_slug'];
    // 示例:根据产品别名从数据库查询数据
    // $product = fetchProductBySlug($productSlug);
    if ($product) {
        // 输出产品详情
        echo "<h1>" . htmlspecialchars($product['name']) . "</h1>";
        // 补充其他详情内容
    } else {
        // 产品不存在时返回404
        http_response_code(404);
        echo "<h1>404 产品不存在</h1>";
    }
} else {
    // 展示产品列表
    echo "<h1>产品列表</h1>";
    // 补充列表内容
}
?>

Nginx服务器

在站点配置文件的server块中添加以下规则:

location / {
    try_files $uri $uri/ /index.php?product_slug=$uri;
}

index.php的修改逻辑和Apache环境完全一致,通过product_slug参数查询并展示产品详情。

关键注意点

  • 确保服务器开启URL重写:Apache需启用mod_rewrite模块,Nginx默认支持相关规则;
  • 产品别名(slug)必须唯一,建议使用小写字母、数字和连字符,避免特殊字符,保证URL规范;
  • 产品列表中的链接直接使用example.com/产品别名格式,替代带参数的URL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 01:15:32