Сайт Для Сокращения URL-адресов


Я работаю над сайтом для сокращения URL-адресов, который использует PHP, MySQL и Apache. Общая идея сокращения URL-адресов, когда я смотрю на проекты с открытым исходным кодом: пользователь дает ссылку на URL-адрес, и система получает идентификатор для этой ссылки из базы данных. Затем преобразуйте базовую систему ID X (я использую базу 36). Затем используйте Apache mod_rewrite и создайте сокращенный URL-адрес, а затем перенаправьте. Все ли сайты для сокращения URL-адресов работают так или некоторые используют другой алгоритм, отличный от этого? И любая идея, как что-то изменить из других систем сокращения URL-адресов?

Author: VoteyDisciple, 2009-09-05

6 answers

Я думаю, что вы на правильном пути.

Однако одна вещь, которую я бы не сделал, как вы сказали, касается этой части:

Затем используйте apache mod_rewrite и создайте сокращенный URL-адрес, а затем перенаправьте.

Я не думаю, что я бы создал переписчик Apache или использовал mod_rewrite.


При получении короткого URL-адреса, например short.com/MYID, идентификатор будет:

  • расшифруйте часть "MYID" до идентификационного номера в БД
  • извлеките URL-адрес из базы данных
  • просто перенаправление на этот 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]


Надеюсь, это поможет:-)

 4
Author: Pascal MARTIN, 2009-09-05 11:50:33

Вы можете использовать bit.ly (это использует twitter). Существуют некоторые API-интерфейсы, которые вы можете использовать для вызова и извлечения сокращенных URL-адресов.

Также поговорим о сокращении 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-разрядных целых чисел) в качестве сокращенного идентификатора - http://host/?id

И когда вы вызываете URL-адрес http://host/?As2dD24B , он будет искать соответствующий идентификатор и URL-адрес, а затем перенаправит на URL-адрес. просто?

Также имейте в виду, что вы можете расширить свою базу 36. Я предполагаю, что ваша база 36: а-я и 0-9. Вы можете добавить в A-Z (еще 26) и другие символы (такие как ?,:*&^%$#@).

 3
Author: mauris, 2009-09-05 15:25:32

Если вы хотите сделать что-то отличное от других сайтов по сокращению URL-адресов, придумайте способ убедиться, что ссылки не сломаются, если ваш сайт исчезнет! Я не знаю, как это сделать, я думаю, что это, вероятно, невозможно...

 2
Author: Ned Batchelder, 2009-09-05 11:57:43

Просто примечание по безопасности: Не перенаправляйте напрямую на сайт с сокращенного URL-адреса, если он не находится под вашим контролем/доменом - есть целевая страница, на которой пользователь может увидеть фактический URL-адрес и решить, продолжать или нет...

 2
Author: Oskar Duveborn, 2009-09-05 12:06:39
 2
Author: , 2009-09-05 15:09:32

Я бы предложил использовать YOURLS, который является надежным пакетом с открытым исходным кодом, чтобы сделать именно это. Он основан на PHP/MySQL.

Http://yourls.org/#Install

Со страницы о программе:

YOURLS - это небольшой набор PHP-скриптов, которые позволят вам запустить собственную службу сокращения URL-адресов (а-ля TinyURL). Вы можете сделать его частным или общедоступным, вы можете выбрать пользовательские URL-адреса ключевых слов, он поставляется с собственным API.

 0
Author: jaredstenquist, 2012-06-15 14:25:50