Безвкусный link php. Простой скрипт для сокращения URL-адреса

Безвкусный link php. Простой скрипт для сокращения URL-адреса

Продолжаю делиться с вами маленькими, но очень полезными скриптами для сайта, которыре помогают улучшить отношение поисковых систем к вашему сайту. На этот раз речь пойдет об грамотной перелинковке страниц.

Для начала создадим базу адресов страниц и возможные анкоры к какждому из них. В качестве базы будем использовать файл формата *.txt . Структура файла будет такой:

Адрес_страницы_1;анкор_1,анкор_2,анкор_3,...,анкор_n адрес_страницы_2;анкор_1,анкор_2,анкор_3,...,анкор_n адрес_страницы_3;анкор_1,анкор_2,анкор_3,...,анкор_n ... адрес_страницы_n;анкор_1,анкор_2,анкор_3,...,анкор_n

Как видите, дальнейшее использование скрипта возможно при любом количестве адресов страниц и анкоров к ним. Адрес страницы пишется без http://www.site.ru/, т.е. сразу от корня без первого слэша. Адрес раздляется от анкоров через точка с запятой, а анкоры между собой просто запятой. Можно сделать и написание полного адреса, просто лично мне так удобнее, а изменить под себя заполнение и выдачу результата вы можете и сами, думаю, вы интуитивно и сами разберетесь.

И так, база ссылок и анкоров к ним создана, далее я приведу пример кода PHP для непосредственного вывода ссылок для перелинковки на сайте:

".$tex2[$tex3].""; } ?>

Вставляем этот код в любое место на сайте, который выводит 5 случайных ссылок из базы и случайным анкором. Анкоры лучше разбавлять, а не писать только 1 к ссылке. При грамотной перелинковке на сайте вы незамедлительно увидите прирост трафика и улучшение других показателей сайта.

Жду ваши вопросы в комментариях к данному посту.

Дата публикации: 03 марта, 2014
    Отзывы и комментарии:

    Дмитрий :
    Спасибо за скрипт, буду внедрять. Из исходного кода с сайта невозможно скопировать, копируется только маленькими отрывками, было бы удобнее целиком.

    Кирилл :
    Спасибо за замечание с копированием, только сейчас это увидел, постараюсь в ближайшее время исправить.

    Алексей Павлов :
    Ошибка в строчке $tex = explode(":",$sendlist[$count] Нужна точка с запятой, а не двоеточие. Я немного изменил код, сделал его понятнее: $anchor"; } ?>

    Matrk :
    Статья полностью бесполезна, т.к. на блоге стоит защита от копирования текста.

    Кирилл :
    Небольшой косяк есть в js, это да, нет времени поправить, но наверное кое-кто другой бесполезный, раз ума не хватает в таком случае исходный код страницы глянуть и взять от туда

    Matrk :
    Т.е. я должен еще по исходному коду лазить и чистить его от всякого мусора? Вы забавный.

    Кирилл :
    Получается я кому-то что-то должен? Я у вас что, деньги взял, стараешься тут, бесплатные советы даешь:))) Бесплатный сыр только в мышеловке, с возрастом поймете.

    Кирилл :
    Убрал косяк, пользуйтесь на здоровье.

    Андрей Копаев :
    1 - наверное лучше это делать с использованием базы данных mysql работать будет быстрее, добавлять проще 2 - не пойму какой смысл каждый раз генерить список ссылок? как это влияет на рост трафика? можно ли подгружать аяксом, т.е. это для людей или для ботов?

    www.сайт :
    Для продвижения, хотя, лично я не сторонник подобных манипуляций с ПС.

СКАЧАТЬ ИСХОДНИКИ

Мне нравится решать проблемы с помощью маленьких и компактных скриптов. Чем меньше кода нужно написать, тем лучше. Недавно у меня в очередной раз появился шанс это сделать.

Эта проблема может быть решена с помощью скрипта для сокращения URL-адресов. Уже довольно давно существуют сервисы, предоставляющие такие возможности, но они не без недостатков. Вот некоторые из них:

  • Зависимость от внешнего сервиса – когда он не работает, ссылки тоже оказываются недоступными. Еще хуже, если сервис закрывается – сами понимаете к чему это приведет;
  • Вся статистика отслеживается сторонними сервисами;
  • Обычно, не разрешается изменять вид укороченных ссылок;
  • Некоторые сервисы позволяют выбрать свои псевдонимы, но большинство назначает их автоматически.

Итак, задача состоит в написании собственного PHP-скрипта, который был позволил решать задачу, описанную выше!

Идея

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

  • Короткие ссылки будут иметь вид http://example.com/l/short-link . Посещение данного URL-адреса будет переадресовываться на реальный адрес;
  • Весь скрипт будет располагаться в единственном файле – index.php, без внешних зависимостей;
  • Панель администратора с инструментами добавления и редактирования ссылок отсутствует. Все будет управляться с помощью простого текстового файла, расположенного на сервере, который очень легко отредактировать;
  • Идентификаторы не будут автоматически присваиваться ссылкам – вы сами будете вводить псевдоним.

Эти пункты упростят наш будущий скрипт. Чтобы сделать все еще более понятным, я решил хранить ссылки в INI-файле, потому что его легко отредактировать и PHP имеет их встроенную поддержку через функцию parse_ini_file (это убережет нас от необходимости читать содержимое файла и парсить его вручную, к тому же эта функция работает очень быстро).

INI-файл

INI-файл выглядит так:

links.ini

Реализация

Наш PHP-скрипт гениально прост:

index.php

$links = parse_ini_file("links.ini"); if(isset($_GET["l"]) && array_key_exists($_GET["l"], $links)){ header("Location: " . $links[$_GET["l"]]); } else{ header("HTTP/1.0 404 Not Found"); echo "Unknown link."; }

Скрипт ожидает получения псевдонима в массиве $_GET[‘l’] , который выглядит например так: http://example.com/index.php?l=google .

Конечно это не сокращение, но мы можем улучшить это с помощью файла .htaccess (используется для запуска веб-сервера Apache).

Htaccess

RewriteEngine On RewriteCond $1 !^(index.php) RewriteRule ^(.*)$ index.php?l=$1 [L]

Этот файл должен находиться в той же директории, что и index.php и links.ini . Его назначение состоит в том, чтобы перенаправлять каждый запрос, который идет НЕ к файлу index.php , на адрес вида index.php?l=xxx . Это защитит от циклических ссылок и сделает файл links.ini недоступным из браузера.

Для достижения наилучших результатов, поместите три этих файла в папку с коротким именем, к примеру «l », в корневую папку сайта, и получите короткий вид ссылок в форме http://example.com/l/google .

Пример с сайтом google.com не слишком нагляден, так как укороченная ссылка получается длиннее оригинала, однако важно было показать именно суть работы механизма, что, надеюсь, и было достигнуто.

Заключение

Еще одно улучшение, которое можно сделать, это создать простейший административный интерфейс, чтобы можно было менять содержимое INI-файла.

Конечно, в данном скрипте можно еще много чего реализовать. Надеюсь, что мое творение было для вас полезным!

Перевод статьи «Quick Tip — Create a Simple URL Shortener With 10 Lines of PHP » был подготовлен дружной командой проекта .

Хорошо Плохо

Описание

HTML тег определяет отношение между текущим html-документом и внешним ресурсом, на который он ссылается. Он является пустым элементом (не имеет содержимого и закрывающего тега) и всегда должен располагаться внутри элемента . Чаще всего тег используется для подключения внешних таблиц стилей:

Первый атрибут href определяет адрес документа, который может быть как абсолютным так и относительным. Второй атрибут rel указывает связь между HTML файлом и тем, на что вы ссылаетесь, в данном случае мы ссылаемся на таблицу стилей, поэтому используется значение stylesheet. Атрибут type сообщает браузеру MIME тип документа, для таблиц стилей значением всегда будет "text/css" .

Примечание: по стандарту HTML5, при подключении к документу внешнего файла CSS, атрибут type указывать не требуется:

Предварительная загрузка страниц

Обычно, когда вы кликаете по ссылке на другую страницу приходится ждать несколько секунд пока она загрузится. Однако, вы можете настроить вашу веб-страницу таким образом, чтобы определённые страницы загружались заранее в кэш браузера в то время пока вы находитесь на текущей странице. Это означает, что когда вы кликнете по ссылке для перехода на другую веб-страницу, то она откроется сразу и не надо будет ждать, пока она загрузится. Это называется "предварительное получение страницы". Чтобы сделать это, используется тег с атрибутом rel="prefetch" , а также указывается целевая страница, которая будет заранее загружена на компьютер.

Такая запись позволит заранее закешировать страницу tag_p.php на компьютере, пока вы читаете содержимое текущей страницы. Вы можете использовать тег для предварительной загрузки любого количества страниц вашего собственного сайта или любых других из интернета.

Примечание: вместо адреса на HTML-документ можно указать путь к файлу другого типа (картинку, видео и тд.).

Атрибуты

href: Указывает месторасположение (URL) внешнего файла (путь к файлу может быть указан с помощью абсолютного или относительного адреса). hreflang: Указывает двухбуквенный код языка, определяющий язык документа, на который ведет ссылка. Атрибут hreflang используется только совместно с атрибутом href . media: Определяет под какие устройства оптимизирован файл. Главным образом он используется с файлами таблиц стилей, для определения различных стилей под разные типы носителей. Атрибут media может принимать сразу несколько значений, разделяемых между собой пробелами. rel: Указывает связь между текущим документом и документом, на который ведет ссылка.
  • alternate - ссылка на альтернативную версию документа (то есть страницы для печати, перевод или зеркало).
  • author - определяет ссылку страницу об авторе документа или на страницу с контактными данными автора.
  • canonical - позволяет пометить страницы с дублирующимся контентом, это значит что все страницы, имеющие одинаковое содержимое должны содержать тег с атрибутом rel="canonical" .

    Атрибут href , в этом случае, должен содержать ссылку на страницу с идентичным содержимым, которую поисковые системы должны считать основной:

  • first - указывает ссылку, ведущую на первый документ из последовательности документов.
  • help - ссылка на документ со справкой.
  • icon - определяет путь к иконке, которая будет использована для текущего документа.
  • last - указывает ссылку, ведущую на последний документ в последовательности документов.
  • licence - ссылка на сведения об авторских правах для документа.
  • next - указывает, что этот документ является частью серии, и что ссылка будет вести на следующий документ в этой серии.
  • prefetch - указывает, что следует заранее кэшировать файл, на который ведет ссылка.
  • prev - указывает, что этот документ является частью серии, и что ссылка ведет на предыдущий документ в этой серии.
  • search - ссылка на поиск для документа.
  • stylesheet - определяет внешний файл, который будет использоваться в качестве таблицы стилей для данного документа.
sizes: Указывает размер иконок для визуального отображения. Атрибут sizes используется только совместно с rel="icon" , может принимать следующий значения:
  • ширинаXвысота - определяет список размеров, разделенных пробелами, каждый размер должен быть в формате - ширинаxвысота (размеры иконки определяются в пикселях), пример:
  • any - иконка может масштабироваться до любого размера.
type: Указывает MIME-тип (спецификация форматирования сообщений и кодирования информации для передачи по интернету) документа, на который ведет ссылка, используется только совместно с атрибутом href .

Тег так же поддерживает



© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows