dwz-shorturl:一款轻量、可自建的短链接服务(PHP + MySQL)

一、背景

老板说要一个短网址程序。

我直接CV,主打极简:部署方便、依赖少、可控性强,适合个人或小团队在自有域名下快速搭建短链接服务。

dwz-shorturl:一款轻量、可自建的短链接服务(PHP + MySQL)

二、项目简介

  • dwz-shorturl是基于 PHP + MySQL 的短网址服务。
  • 前端纯静态页,API 生成短码,Nginx 伪静态实现跳转。

三、功能亮点

  • 安全优化:严格 URL 校验、预处理 SQL、跳转后 exit、InnoDB + utf8mb4
  • 生成短链(支持 JSON/TXT 两种返回)
  • 本地化前端资源(Bootstrap、favicon),不依赖外链
  • 简单安装,MySQL 单表设计

四、目录结构

  • index.html:前端页面
  • api.php:生成短链 API
  • do.php:短码跳转
  • install.sql:初始化建表
  • includes/:数据库与工具函数
  • assets/:本地化静态资源(Bootstrap 等)

五、快速开始

1) 上传全部文件到站点根目录

2) 导入数据库

-- 执行 install.sql

3) 配置数据库

  • 编辑 config.php,填写 $host/$port/$user/$pwd/$dbname

4) 放置图标

  • 根目录添加favicon.ico

5) 访问首页

  • 打开你的域名根路径即可使用

六、Nginx 伪静态

location / {
    index index.php index.html;
    if (!-e $request_filename) {
        rewrite ^/(.+)$ /do.php?uid=$1 last;
    }
}
dwz-shorturl:一款轻量、可自建的短链接服务(PHP + MySQL)

七、API 使用

  • 生成(JSON)
GET /api.php?url=https%3A%2F%2imotao.com
返回: {"code":"<短码>","msg":"success","result":1}
  • 生成(TXT)
GET /api.php?url=https%3A%2F%2Fimotao.com&format=txt
返回: <短码>
  • 访问短链
https://你的域名/<短码>

八、安全与稳定性改进

  • 仅允许 http/https,限制 URL 长度,拒绝危险协议
  • API 返回 Content-Type: application/json; charset=utf-8
  • SQL 使用预处理(存在退化方案),避免注入
  • 短码跳转后立即 exit,404 分支一致
  • 表结构使用 InnoDB + utf8mb4,uid 唯一索引、longurl 前缀索引

九、二次开发建议

  • 限流/黑名单:防止接口被刷
  • 自定义短码与过期时间
  • 访问统计与后台管理
  • 环境变量配置(替代明文 config.php)

十、源码下载

CNB:https://cnb.cool/code_free/dwz-shorturl/-/git/archive/refs/heads/master.zip

Github:https://github.com/motao123/dwz-shorturl

Gitee:https://gitee.com/pigfei/dwz-shorturl

原创文章,作者:陌涛,如若转载,请注明出处:https://imotao.com/9066.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
陌涛陌涛
上一篇 2025年10月29日 下午2:26
下一篇 2025年10月31日 下午1:19

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理

docker镜像已更新为 https://0-docker.nat.tf/