URL缩短站点

2022-01-04 00:00:00 algorithm php mysql apache url-rewriting

我正在开发一个使用 PHP、MySQL 和 Apache 的 URL 缩短站点.当我查看开源项目时,URL 缩短的总体思路:用户提供一个 URL 链接,系统从数据库中获取该链接的 ID.然后转换 ID X 基本系统(我使用的是 base 36).然后使用 Apache mod_rewrite 并创建缩短的 URL,然后重定向.是否所有的 URL 缩短站点都像这样工作,或者是否有一些使用除此之外的不同算法?有什么想法可以与其他 URL 缩短系统不同吗?

I am working on a URL shortening site which uses PHP, MySQL and Apache. General idea of URL shortening as I look at open source projects: user gives a URL link and the system gets ID for that link from database. Then convert the ID X base system (I am using base 36). Then use Apache mod_rewrite and create shortened URL and then redirect. Do all of the URL shortening sites work like that or do some use a different algorithm other than this? And any idea for making a difference from other URL shortening systems?

推荐答案

我认为你说的很对.

不过,我不会像你说的那样做的一件事是关于这部分:

One thing I would not do like you said, though, is about this part :

然后使用 apache mod_rewrite 并创建缩短网址,然后重定向.

then use apache mod_rewrite and create shorten url and then redirect.

我认为我不会创建 Apache RewriteRule,也不会使用 mod_rewrite.

I don't think I'd create an Apache RewriteRule, nor use mod_rewrite.


当收到一个短网址时,比如 short.com/MYID,Id 会:

  • 将MYID"部分解密为DB中的id号
  • 从数据库中获取 URL
  • 只需从某些服务器代码(如 PHP,使用 header 函数)

我猜有点像这样:

// fetch $urlFull from DB (corresponding to the MYID received in GET)
header('HTTP/1.x 301 Moved Permanently');
header('Location: ' . $urlFull);
die;


(编辑)如果 mod_rewrite 你的意思是transform short.com/MYID to short.com/id=MYID",哦,是的,在这种情况下,当然!


(edit) If by mod_rewrite you meant "transform short.com/MYID to short.com/id=MYID", oh, yes, in this case, of course !

顺便说一句,我在我的一个网站上使用了这样的东西:

I'm using something like this on one of my sites, btw :

RewriteEngine on
RewriteCond %{REQUEST_URI}  !^/index.php
RewriteRule ^(.*)$ /index.php?hash=$1   [L]


希望这会有所帮助:-)


Hope this helps :-)

相关文章