Skip to content

jianghuasheng/shortUrl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

自己动手搭建短网址服务器

前段时间小博主在公司工作的时候发现有个项目经常会用到短网址服务,收集了下资料,写了下开发流程就开始弄了,然后就在公司的服务器上搭建了一个简单的短网址服务,用到现在基本也没出什么问题,具体的开发和搭建流程如下:

前提条件:

  1. Linux服务器(Centos系统)
  2. PHP运行环境(Nginx环境)
  3. Mysql数据库

开发流程:

一、简单的功能分析

通过调研发现,该功能需求主要由以下几个组成:

  1. 把长链接转换成短链接的功能模块
  2. 把短链接还原成长链接的功能模块
  3. 统计记录短网址转换长网址的日志
  4. 线上部署

二、部分核心代码

文件结构主要有三个:


a、build.php (生成短链接功能并且存储到数据库里);
b、db.php (数据库连接配置)
c、index.php (短链接还原长链接的接口);

1. 长链接生成短链接的功能

这里的核心代码主要是通过接受用户输入的长链接的值,然后再通过简单的判断是否存在,如果存在该长链接记录则直接返回已经生成的那个短链接。如果不存在转换记录,通过简单的算法生成不重复的6位字符串来标识该长链接,再把标志码传到数据库记录转换记录。

2. 短链接还原长链接的功能

该模块主要是通过对接收用户传过来的短网址后面的6位标志码来去查找数据库里面存在的长链接记录,同时记录用户的访问日志等。

三、线上部署

想直接配置类似这种http://s.jianghuasheng.cn/Gjhg4o=>域名+6位标识码就可以访问的,需要在nginx虚拟主机的配置文件那里配置。主要是在配置文件里加上重定向的配置,如下(注意:这里的是Nginx的环境配置,Apache的请前往百度):

 location / {
    if (!-e $request_filename){
      rewrite  ^(.*)$  /index.php?url=$1  last;   break;
     }
  }

这里的意思主要是指默认把链接:(http://s.jianghuasheng.cn/Gjhg4o)转换为(http://s.jianghuasheng.cn/index.php?url=Gjhg4o)。
当然,配置成类似(http://jianghuasheng.cn/s/Gjhg4o)的方法也是大概一直的,这里不一一介绍了。

总结

实现这个功能并不是很难,但是有几点还是要注意下的:保证每次生成的标志码都是不一样的!这里通过网上找到的一个算法,通过对用户传过来的连接进行处理,得到不同的标志码。长链接不同,标志码生成就不一样了。同时,为了该功能模块的使用简便性,直接架构成接口的模式,直接直接调用接口就可以实现功能。

About

自己动手搭建短网址服务器

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages