无数据库PHP短网址生成器:使用NGINX伪静态和本地文件存储
这是一个使用PHP编写的短网址缩短程序的示例,它不需要数据库,而是使用NGINX伪静态和本地txt文件来存储短网址和长链接的映射关系。
<?php
// 获取长链接参数
$url = $_GET['url'];
// 生成短网址
$shortUrl = generateShortUrl($url);
// 保存短网址和长网址的映射关系到本地txt文件
saveUrlMapping($shortUrl, $url);
// 重定向到长网址
header("Location: $url");
/**
* 生成短网址
* @param string $url 长链接
* @return string 短网址
*/
function generateShortUrl($url)
{
// 使用md5对长链接进行哈希处理
$hash = md5($url);
// 取哈希值的前8位作为短网址
$shortUrl = substr($hash, 0, 8);
return $shortUrl;
}
/**
* 保存短网址和长网址的映射关系到本地txt文件
* @param string $shortUrl 短网址
* @param string $url 长链接
*/
function saveUrlMapping($shortUrl, $url)
{
// 打开txt文件,如果不存在则创建
$file = fopen("url_mapping.txt", "a+");
// 将短网址和长网址写入文件
fwrite($file, "$shortUrl,$url\n");
// 关闭文件
fclose($file);
}
?>
上述代码将长链接使用md5哈希处理后的前8位作为短网址,然后将短网址和长链接的映射关系保存到本地的url_mapping.txt文件中。最后通过重定向将短网址跳转到对应的长网址。
在NGINX的配置文件中,可以使用以下伪静态规则来实现短网址的跳转:
location / {
if (!-e $request_filename){
rewrite ^/(.*)$ /index.php?url=$1 last;
}
}
以上配置将所有的请求都重写到index.php文件,并将请求的URL作为参数传递给index.php。然后PHP代码会根据传递的长链接生成短网址并保存映射关系,最后通过header("Location: $url");进行重定向。
原文地址: https://www.cveoy.top/t/topic/bTCu 著作权归作者所有。请勿转载和采集!