一:根据长链生成6位的短链字母,并保存二者之间的映射关系
二:配置nginx转发,利用 rewrite 指令将请求重定向到自己提供的接口,根据6位唯一码去数据库中查找原链接,重定向过去
nginx 配置例如
访问:短链 test.ppf.com/asdFgj
server
{
listen 80;
server_name test.ppf.com;
location / {
rewrite '^/[a-zA-Z0-9]{6}$' https://test.ppf.com/fsd/shortUrl/conversion/$document_uri permanent;
try_files $uri $uri/ /index.html;
root /www/web/fsd_h5/h5/;
index index.html index.htm;
}
}
rewrite指令
该指令通过正则表达式的使用来改变URI.可以同时存在一个或者多个指令,按照顺序一次对URL进行匹配和处理。该指令可以在server块后者location块中配置
语法:指令语法:rewrite regex replacement [flag];
rewrite是实现URL重定向的重要指令
regex:用来匹配URI的正则表达式;
replacement:匹配成功后用来替换URI中被截取内容的字符串,默认情况如果该字符串包含“http://”、"https://"开头,则不会继续向下对URI进行其他处理。直接返回重写的URI给客户端
flag:用来设置rewrite对URI的处理行为,包含如下数据:
标记符号 说明
last 终止在本location块中处理接收到的URI,并将此处重写的URI作为新的URI使用其他location进行处理。(只是终止当前location的处理)
break 将此处重写的URI作为一个新的URI在当前location中继续执行,并不会将新的URI转向其他location。
redirect 将重写后的URI返回个客户端,状态码是302,表明临时重定向,主要用在replacement字符串不以“http://”,“ https://”或“ $scheme” 开头;
permanent 将重写的URI返回客户端,状态码为301,指明是永久重定向;