URL缩短网站

URL缩短网站

问题描述:

我正在使用PHP,MySQL和Apache的网址缩短网站。当我看到开源项目时,URL缩短的一般想法:用户给出URL链接,系统从数据库获取该链接的ID。然后转换ID X基本系统(我正在使用基数36)。然后使用Apache mod_rewrite并创建缩短的URL,然后重定向。所有的网址缩短网站是否像这样工作,或者做一些使用不同的算法?还有什么想法可以改变其他URL缩短系统?URL缩短网站

+10

你要问的问题是:为什么你想要另一个网址缩短网站?如果你想做一些与已经存在的东西完全一样的东西,那就好像浪费时间。另一方面,如果你想做一些不同的事情,你是唯一知道那是什么的人。 – VoteyDisciple 2009-09-05 11:50:53

+1

我想添加更多的功能,如 1 Firefox插件 2自动拷贝剪贴板 3后美味,跌跌撞撞像网站 4,我想使用谷歌安全浏览整合 – 2009-09-05 12:14:33

+7

我看不出有什么理由不重建因为在一天结束的时候,你已经学会了如何建立你自己的车轮。 – Fiarr 2009-09-05 14:55:14

我认为你是正确的。

有一点像你说我不会做,不过,是这个部分:

然后使用Apache的mod_rewrite和创建缩短 URL,然后重定向。

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


当接收到一个短网址,像short.com/MYID,编号会:

  • 解密 “MYID” 部分的ID号在DB
  • 从数据库
  • 抓取网址只是重定向到来自某些服务器代码的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你的意思是 “变换short.com/MYID到short.com/id=MYID”,哦,是的,在这种情况下,当然!

我使用这样的事情在我的网站之一,顺便说一句:

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


希望这有助于:-)

如果你想要做的事与其他网址缩短网站不同,找出一种方法来确保如果您的网站消失,链接不会中断!我不知道如何做到这一点,我认为这恐怕是不可能的......

+0

您可以使用Elastic IP在Amazon EC2上设置您的服务器。这将提供良好的负载平衡。 – Luke 2009-09-07 03:57:36

只是一个安全注意:不要直接从缩短的URL,如果它不是你的控制/域名下重定向到该网站 - 有一个着陆页面,在这里用户可以看到实际的URL,并决定是否继续或不...

+0

并确保访问者可以将该网站标记为垃圾邮件。 – ZippyV 2009-09-05 12:33:55

+2

这会毁掉一个对我而言较短的网址。允许添加一个选项?到一个链接来获取它的细节 - 类似于br.st和bit.ly – 2009-09-05 15:16:25

+0

那么,只是加载一个网站可以毁了你的一天/电脑,我们应该教导用户先看看网址,并试图找出它们是什么想要......听起来可能是偏执狂,但许多攻击是基于用户被引导到恶意网站。 – 2009-09-06 15:25:47

您可以使用bit.ly(Twitter使用这个)。有一些API可以用来调用和获取缩短的URL。

也谈缩短网址,你可以简单地用一个表像这样

CREATE TABLE `urls` (
    `id` varchar(255) NOT NULL default '', 
    `url` text NOT NULL default '', 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

在那里你可以有id(在基地36,以防止32个整数耗尽)是缩短ID - http://host/?id

当您调用URL http://host/?As2dD24B时,它将查找匹配的ID和URL,然后重定向到URL。简单?

还请记住,您可以扩大您的基数36.我假设您的基数36是: a-z和0-9。您可以添加A-Z(另一个26)和其他符号(如?,:* & ^%$#@)。

我会建议使用YOURLS这是一个强大的开源包做的正是这一点。它是基于PHP/MySQL的。

http://yourls.org/#Install

从有关网页:

YOURLS是一小PHP脚本,让你运行你自己的网址缩短服务的(一拉TinyURL的)。您可以将其设为私密或公开,您可以选择自定义关键字网址,并附带自己的API。