Сокращение URL-адреса на PHP
Многие из Вас слышали про сервисы сокращения URL. В этой статье я решил рассказать, как это можно реализовать у себя на сайте. Где это может быть нужно? Например, если Вы где-нибудь в книге вставите ссылку, затем эту книгу распространите, а после Вам потребуется исправить адрес этой ссылки. Вот эту задачу мы сейчас с Вами и решим.
Для начала надо создать INI-файл с псевдонимами и соответствующим им адресами (shortlinks.ini):
myrusakov=http://myrusakov.ru
mail=http://mail.ru
Теперь создадим файл r.php, который и будет заниматься редиректами:
<?php
$shortlinks = parse_ini_file("shortlinks.ini"); // Получаем массив данных из INI-файла
if(isset($_GET["r"]) && array_key_exists($_GET["r"], $shortlinks)) { // Если передан правильный GET-параметр
header("Location: ".$shortlinks[$_GET["r"]]); // Делаем редирект
exit; // Завершаем скрипт
} else {
header("HTTP/1.0 404 Not Found"); // Если GET-параметра нет, или он отсутствует в INI-файле, то возвращаем 404
echo "Error"; // Выводим ошибку
}
?>
Теперь при переходе по такому адресу "http://mysite.ru/r.php?r=mail" будет сделан редирект на mail.ru. Однако, этот адрес не является красивым. Чтобы улучшить его внешний вид, можно воспользоваться .htaccess и модулем mod_rewrite:
RewriteEngine on
RewriteRule ^.*r/(.*)$ r.php?r=$1
Теперь Вы можете везде вставлять ссылку вида "http://mysite.ru/r/mail", а если вдруг Вам потребуется изменить её направление, то просто исправляете INI-файл.
Вот таким образом можно легко и быстро сделать сокращение URL-адреса на PHP.
-
- Михаил Русаков
Комментарии (2):
Только в результате получится не сервис сокращения, а личная база уже сокращённых ссылок. Чтобы был сервис, нужен ещё алгоритм, который добавляет новые URL в ini-файл или в БД (потому как если коротких ссылок станет много, будет перерасход памяти в PHP). Ну и запрет на прямой доступ к ini-файлу в htaccess тоже бы не помешал... Но это уже наверное для тех, кто с нуля дошёл "до гуру" :) А для новичка, конечно, как всегда у Михаила, инструкция в статье дельная.
Ответить
Неплохо!
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.