Почему важны URL?
Статические URL и динамические URL
Статические URL
Динамические URL
URL-адреса и CTR
URL-адреса и дублированный контент
URL-адреса в реальном мире
Пример 1: динамические URL-адреса
Пример 2: числовая подмена в URL-адресах
Пример 3: URL-адреса со вставленными ключевыми словами
Поддержка согласованности URL-адресов

Подмена URL

Данный раздел содержит решения, которые учитывают приведенные выше соображения и рекомендации и которые можно применить в Web-приложениях для подмены URL с помощью модуля Apache mod_rewrite.

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

Основная проблема, которую вам придется преодолеть при реализации приведенных ранее URL-адресов, состоит в том, что на самом деле они не существуют нигде в вашем Web-сайте. Сайт все равно содержит сценарий — с именем, скажем, product.php — который будет получать параметры из строки запроса и генерировать контент, зависящий от этих параметров. Этот сценарий будет способен обработать запрос наподобие:

http://seophp.example.com/product.php?product_id=123
Но ваш Web-сервер сгенерирует ошибку 404 при попытке перехода по адресам вроде:
http://seophp.example.com/Products/123.html
http://seophp.example.com/my-super-product.html

Подмена URL позволяет преобразовать URL-адреса таких входящих запросов в другие URL на основе определенного набора правил. То есть с его помощью можно преобразовать приведенные выше несуществующие URL-адреса в product.php?product_id=123, который существует.

Подмена URL выполняется Web-сервером Apache с помощью модуля mod_rewrite.
Он никак не относится к РНР, т.к. интерпретатор РНР работает только при выполнении .php-файла. В мире Apache модуль mod_rewrite фактически является стандартом для подмены URL и обычно поддерживается любым пакетом хостинга на базе Apache.
Именно он используется в примерах данной главы и всей этой книги.

На рисунке показано место mod_rewrite в общей картине. Он выполняет подмену URL-адресов во входящих запросах, но никак не влияет на выходные данные РНР-сценария.

На первый взгляд, кажется, что правила подмены можно легко добавить в существующий Web-сайт, но на практике приходится принимать во внимание и другие вопросы. Например, как показано чуть ниже, придется изменить существующие ссылки в контенте Web-сайта. Тема правильного перенаправления старых ссылок на новые ссылки в уже существующем Web-сайте продолжена в Перемещение контента и коды состояния HTTP.

Модуль Apache mod_rewrite — неоценимое средство для Web-разработчиков, занятых созданием сложных динамических сайтов, которые при этом еще и подстроены под поисковые механизмы. Он позволяет программистам объявить набор правил, которые на ходу применяются Apache для отображения статических URL-адресов, запрашиваемых пользователем, в строки динамических запросов, посылаемых различными PHP-сценариями. Но с точки зрения агента поискового механизма такие URL-адреса статичны.

Чтобы научиться правильно использовать mod_rewrite, требуется серьезная работа, но
зато окончательный результат получится красивым и элегантным. Он позволяет посетителям и поисковым механизмам обращаться к вашему сайту с помощью красивых и дружественных к поисковым механизмам статических URL-адресов. Несмотря на это, на самом деле сценарии продолжают работать в обычном стиле — с параметрами строк запросов. Как видно на рисунке, PHP-сценарий не подозревает, что первоначальный пользовательский запрос относился совсем к другому URL.

Официальную документацию по mod_rewrite можно найти по адресу http://httpd.apache.org/docs/2.2/rewrite/. Введение в mod_rewrite находится по адресу http://httpd.apache.org/docs/2.2/rewrite/rewrite_intro.html. Имеется и несколько книг, посвященных modrewrite.Мы рекомендуем The Definitive Guide to Apachemod_rewrite (Apress, 2006).

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

Инсталляция mod_rewrite
Тестирование mod_rewrite
Введение в регулярные выражения
Подмена URL и PHP
Подмена числовых URL с двумя параметрами
Подмена URL с ключевыми словами
Создание генератора ссылок
Разбиение на страницы и подмена URL
Подмена изображений и потоковых носителей
Проблемы, которые подмена не может решить
Последнее предостережение
Резюме
Используются технологии uCoz