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

如何在.htaccess文件中添加动态Slug?

实现短链接Slug访问的.htaccess配置方案

你需要在现有.htaccess内容基础上添加URL重写规则,将mysite.com/randomUrlId格式的请求转发到处理短链接的核心PHP文件,以此实现短链接跳转逻辑。

修改后的完整.htaccess内容

#+PHPVersion
#="php74"
AddHandler x-httpd-php74 .php
#-PHPVersion

#+OptionsIndexing
#="1"
Options +Indexes +FollowSymLinks
IndexOptions +FancyIndexing
#-OptionsIndexing

# 开启URL重写引擎
RewriteEngine On

# 仅对非真实文件/目录的请求执行重写
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 将Slug参数传递给处理短链接的PHP文件(可替换为你的实际文件名,比如index.php)
RewriteRule ^(.*)$ redirect.php?slug=$1 [L,QSA]

关键规则说明

  • RewriteEngine On:开启Apache的URL重写功能,这是实现Slug跳转的基础。
  • RewriteCond两条规则:确保仅当请求的不是服务器上真实存在的文件或目录时,才执行重写,避免干扰静态资源(如CSS、图片)或已有页面的访问。
  • RewriteRule:将请求路径中的Slug部分(如randomUrlId)作为slug参数传递给redirect.php,[L]表示这是最后一条执行规则,[QSA]表示保留原请求的查询参数(若有)。

后端处理示例

在redirect.php中,可通过$_GET['slug']获取传递的短链接ID,查询数据库后跳转至原URL:

<?php
// 替换为你的数据库连接信息
$db = new mysqli('localhost', '数据库用户名', '数据库密码', '数据库名');

if (isset($_GET['slug'])) {
    $slug = $db->real_escape_string($_GET['slug']);
    $query = $db->query("SELECT original_url FROM short_links WHERE slug = '$slug'");
    
    if ($query->num_rows > 0) {
        $row = $query->fetch_assoc();
        // 301永久跳转,利于搜索引擎优化
        header("Location: " . $row['original_url'], true, 301);
        exit;
    } else {
        // 短链接不存在时返回404
        header("HTTP/1.0 404 Not Found");
        echo "该短链接不存在";
    }
}
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 12:54:17