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

二、项目简介
- 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;
}
}

七、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
微信扫一扫