我正在开发一个使用 PHP、MySQL 和 Apache 的 URL 缩短网站。当我查看开源项目时,URL 缩短的一般想法是:用户提供一个 URL 链接,系统从数据库中获取该链接的 ID。然后转换 ID X base 系统(我使用的是 base 36)。然后使用 Apache mod_rewrite 并创建缩短的 URL,然后重定向。所有的 URL 缩短网站都是这样工作的,还是有些网站使用的不是这个算法?有什么想法可以区别于其他 URL 缩短系统吗?
最佳答案
我认为您的方法是正确的。
不过,有一件事我不会像你说的那样做,那就是这部分:
then use apache mod_rewrite and create shorten url and then redirect.
我认为我不会创建 Apache RewriteRule,也不会使用 mod_rewrite
。
当收到一个短 url,比如 short.com/MYID
,Id 会:
- 解密“MYID”部分为数据库中的id号
- 从数据库中获取 URL
- 只需从某些服务器代码(如 PHP,使用
header
函数)重定向到该 URL
我猜有点像这样:
// fetch $urlFull from DB (corresponding to the MYID received in GET)
header('HTTP/1.x 301 Moved Permanently');
header('Location: ' . $urlFull);
die;
(编辑)如果 mod_rewrite
您的意思是“将 short.com/MYID 转换为 short.com/id=MYID”,哦,是的,在这种情况下,当然!
我在我的一个网站上使用了类似的东西,顺便说一句:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/index.php
RewriteRule ^(.*)$ /index.php?hash=$1 [L]
希望这会有所帮助:-)
关于php - 网址缩短网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1383145/