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

PHP博客如何移除URL中Slug参数实现简洁伪静态链接

URL简洁化实现方案

你的需求完全可以通过.htaccess实现,也可以根据你用的Web服务器选其他方案,核心逻辑都是把简洁URL里的文章别名自动传给你现有代码里的$_GET['slug'],几乎不用改原有业务代码。

Apache环境:.htaccess重写规则(推荐)

如果你用的是Apache服务器,直接在网站根目录创建或修改.htaccess文件,写入以下规则,就能实现域名/postname-title的访问效果:

RewriteEngine On
# 跳过真实存在的文件、目录,避免静态资源、后台脚本被误重写
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 将路径内容自动传给slug参数
RewriteRule ^(.*)$ Post.php?slug=$1 [L,QSA]

规则生效后,用户访问域名/xxx-post-slug时,服务器会在后台自动转发到Post.php?slug=xxx-post-slug,你原来写的$_GET["slug"]查询逻辑完全不用改就能正常跑。
如果要实现Post.php/postname-title的格式,不需要额外改重写规则,只要在Post.php开头加一段兼容PATH_INFO的代码即可:

// 兼容PATH_INFO传参
if (empty($_GET['slug']) && isset($_SERVER['PATH_INFO'])) {
    $_GET['slug'] = ltrim($_SERVER['PATH_INFO'], '/');
}

Nginx环境:站点配置重写

如果你用的是Nginx服务器,不支持.htaccess,直接在站点对应的server配置块里加以下规则,效果和Apache规则一致:

location / {
    try_files $uri $uri/ @post_rewrite;
}
location @post_rewrite {
    rewrite ^/(.*)$ /Post.php?slug=$1 last;
}

改完重载Nginx配置就生效,原有PHP代码不用调整。

无服务器修改权限:纯PHP适配

如果你没法改Web服务器配置,也可以直接调整PHP代码适配Post.php/postname-title格式的URL,只需要把Post.php开头获取slug的逻辑替换成下面的代码即可:

<?php
// 兼容GET参数和PATH_INFO两种传参方式
$slug = '';
if (isset($_GET['slug'])) {
    $slug = trim($_GET['slug']);
} elseif (isset($_SERVER['PATH_INFO'])) {
    $slug = trim(ltrim($_SERVER['PATH_INFO'], '/'));
}

// 先判断slug是否为空,避免直接访问Post.php时报错
if (empty($slug)) {
    echo "0 results";
    exit;
}

// 原有SQL查询逻辑保留即可,注意用已经处理过的$slug变量,不要重复读$_GET
$sql = "SELECT * FROM posts WHERE slug = '" . mysqli_real_escape_string($db, $slug) . "'";
$result = mysqli_query($db, $sql);
// 后续你原来的输出逻辑完全不用动
注意事项
  • 你原代码里第一行直接写$slug = $_GET["slug"];没有做存在性校验,不带参数访问Post.php的时候会报PHP警告,上面的适配代码已经修复了这个问题。
  • 重写规则里的文件、目录排除判断必须保留,不然站点的CSS、JS、图片,还有create_note.php、delete_post.php这类后台脚本都会被当成文章slug去查询,导致功能异常。
  • 规则配置完成后,要把你模板里原来生成的文章链接从Post.php?slug=xxx改成/xxx的格式,不然用户点旧链接还是会跳转到带参数的长URL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 05:06:21