Сайт Для Сокращения URL-адресов
Я работаю над сайтом для сокращения URL-адресов, который использует PHP, MySQL и Apache. Общая идея сокращения URL-адресов, когда я смотрю на проекты с открытым исходным кодом: пользователь дает ссылку на URL-адрес, и система получает идентификатор для этой ссылки из базы данных. Затем преобразуйте базовую систему ID X (я использую базу 36). Затем используйте Apache mod_rewrite и создайте сокращенный URL-адрес, а затем перенаправьте. Все ли сайты для сокращения URL-адресов работают так или некоторые используют другой алгоритм, отличный от этого? И любая идея, как что-то изменить из других систем сокращения URL-адресов?
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]
Надеюсь, это поможет:-)
Вы можете использовать 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) и другие символы (такие как ?,:*&^%$#@).
Если вы хотите сделать что-то отличное от других сайтов по сокращению URL-адресов, придумайте способ убедиться, что ссылки не сломаются, если ваш сайт исчезнет! Я не знаю, как это сделать, я думаю, что это, вероятно, невозможно...
Просто примечание по безопасности: Не перенаправляйте напрямую на сайт с сокращенного URL-адреса, если он не находится под вашим контролем/доменом - есть целевая страница, на которой пользователь может увидеть фактический URL-адрес и решить, продолжать или нет...
Будучи связанным с предметом... Сокращатели Url-адресов: Разрушение Интернета С тех пор, Как 2002
Я бы предложил использовать YOURLS, который является надежным пакетом с открытым исходным кодом, чтобы сделать именно это. Он основан на PHP/MySQL.
Со страницы о программе:
YOURLS - это небольшой набор PHP-скриптов, которые позволят вам запустить собственную службу сокращения URL-адресов (а-ля TinyURL). Вы можете сделать его частным или общедоступным, вы можете выбрать пользовательские URL-адреса ключевых слов, он поставляется с собственным API.