Shorty-PHP:一个极简的基于PHP的单文件短链接工具
一切的开始
在给他人分享各种链接时,总会遇到一些包含某些符号的链接,例如“【”和“】”,而这些链接在微信、QQ等聊天软件中通常会被这些符号截断,因为聊天软件并不知道这个符号是链接的一部分还是我要发的信息。这个时候,短链接工具就派上了用场。
工具的抉择
在网络上随便一搜,就有大把的短链接工具。那么,我为什么不选择用现成的呢?
原因是出于稳定性与安全性的考量:
- 网络上的短链接工具来源参差不齐,有的来自互联网大厂,有的来自一些小作坊。大厂的就不说了,都是来宰你钱的。而小作坊的则无法保证长期可用,即稳定性较差,我曾用过的一些短链接工具就有已经失效的。
- 另外是安全性的问题,小作坊的域名如果经过转让等方式落入了非法组织的手中,那你生成的短链接指不定会跳到什么▒▒▒▒网站去。到时候如果别人打开了你分享的短链接,那你大概会有理说不清了。
所以,自托管是一个更好的选择。
在GitHub上搜索“short url”,有大量优秀的短链接工具,但点进每一个仓库,你会发现:有的项目仓库文件如山,目录嵌套能嵌一长串;有的项目写了长篇的文档教你如何部署;有的必须依赖复杂的数据库。还有一个可以将短链接服务部署在Cloudflare Pages上的项目,你说“这够简单了吧”,但用过Cloudflare的服务的都知道,Cloudflare在国内网络环境下的低速带来的弊端远大于其便捷性带来的益处,大部分人[1]使用Cloudflare也都是因为其提供慷慨的免费服务。
另外,这些工具拥有大量高级功能,例如API接口、用户系统、后台管理。
但是,我并不需要API接口、用户系统、管理员后台。我需要的,仅仅只是一个能够生成短链接的工具。
自己造!
当已有的选择都不合适时,是时候自己造一个了。
我有一台虚拟主机[2],拥有PHP环境,所以我决定使用PHP编写这个工具,因为我可以很方便地部署它。
index.php:为追求简洁性,我使用单文件实现所有功能(所有功能?不不不,仅仅只是短链接!)。
- 短链接转换
- JSON文件存储,零数据库依赖
- 301永久重定向
- 6位随机短码,自动去重
- 已存在链接自动复用短码
- 新拟态(Neumorphism)样式风格
- 可自定义页脚
links.json:由于厌倦数据库的繁冗,所以我使用一个JSON文件来记录生成的链接。
为了兼容一些老旧的平台,我还做了对PHP5.6的支持,这个工作由AI辅助完成[3]。
我个人非常喜欢新拟物(Neumorphism)的设计风格,清新、灵动,所以整个界面样式由AI辅助完成[3]了新拟物风格化。不必担心,这绝不会违背本项目极简的理念,界面仍然非常简洁(见屏幕截图,事实上,这也是我为何不使用我同样喜欢的顶级美观的液态玻璃设计的原因,复杂的光线计算将违背本项目极简的初心。
实际使用
将index.php甩给服务器,直接就能访问,什么配置都不需要[4]。
打开网站(这里有个Demo),粘贴网址,点一下,短链接就出来了,一键复制
——简单到离谱[5]。
新拟物界面
——优雅。
没有访问统计、没有过期时间、没有后台管理
——纯粹。
当你把https://ccoc.ccccocccc.cc/c/?xxxxxx这样的网址分享给别人时,“你发的网址看起来都一样,怎么打开却是不同的网站?”
——嘉豪[6]。
最重要的:
工具跑在自己的服务器上
——踏实。
什么?你说你服务器可能会到期?数据全在links.php,随时可以保存、迁移。
——还是踏实
总结
这就是Shorty-PHP,一个以极简为理念的短链接工具。
如果你看腻了花里胡哨的短链接,或者对这个项目感兴趣,欢迎到访项目仓库,项目已以MIT协议开源,可以随意使用、修改。
(求一个免费的Star✨!)
Demo
屏幕截图

鸣谢
🙏感谢VmHost提供免费的虚拟主机服务。
注释: