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

Подмена числовых URL с двумя параметрами

В предыдущем упражнении была, по сути, выполнена подмена числовых URL с одним параметром. Теперь этот маленький пример можно расширить до подмены URL-адресов с двумя параметрами.
URL-адреса с одним параметром, с которыми вы только что разобрались, имели
вид http://seophp.example.com/Products/Pn.html. А теперь предположим, что в
ваших ссылках понадобилось поддерживать не только идентификатор продукта, но и идентификатор категории. Новые URL будут выглядеть так:
http://seophp.example.com/Products/C2/Pl.html
Существующий сценарий product.php будет изменен для обработки ссылок наподобие http://seophp.example.com/product.php?category_id=2 &product_id=l
Вспомним еще раз правило подмены, которое применялось для числовых URL с
одним параметром:
RewriteRule ^ Products/P([0-9]*)\.html$/product.php?product_id=$l
Для подмены двух параметров правило будет длиннее, но не намного сложнее:
RewriteRule ^Products/C([0-9]*)/Р([0-9]*)\.html$ /product.php?category_id=$1Sproduot_id=$2 [L]
А теперь воплотим это в жизнь, выполнив небольшое упражнение.

1. В папке seophp измените созданный ранее сценарий product.php следующим
образом:
<?php
// вывод информации о продукте
echo ' Вы выбрали продукт 9' . $_GET [' product_id' ] .
' из категории №1 . $_GET[1oategory_id1];
?>
2. Проверьте работу сценария, введя в браузере адрес http://seophp.example.com/
product.php?category_id=5& product_id=99. Ответ, который вы получите,
должен быть похож на рис. 3.9
3. Измените текущее правило в файле . h t a c c e s s так, как показано в приведенном
ниже коде. Кроме того, удалите все старые правила: они не будут работать так,
как надо, с новым сценарием p r o d u c t .php, который принимает теперь два параметра.
RewriteEngine On
# Преобразование числовых URL-адресов
RewriteRule AProducts/C([0-9]*)/Р([0-9]*)\.html$
4>/product.php?category_id=$lSproduct_id=$2 [L]
Учтите, что команда RewriteRule и все ее параметры должны быть записаны в одной
строке файла .htaccess. Если разбить ее на две строки — так, как это сделано в книге-
то при попытке загрузить сценарии из этой папки вы получите от Web-сервера ошибку 500.
4. А теперь загрузите адрес http://seophp.example.com/Products/С5/Р99.html —
вы должны получить те же выходные данные, что и в предыдущем запросе
(рис. 3.10).
В данном примере вы сначала изменили сценарий product.php , чтобы он принимал URL-адреса с идентификатором продукта и идентификатором категории. Затем вы добавили поддержку подмены URL с двумя числовыми параметрами:
RewriteRule ^Products/C([0-9]*)/Р([0-9]*)\.html$
'Wproduct.php?category_id=$l&product_id=$2 [L].
(Похожий пример уже встречался вам в первом упражнении данной главы, где выполнялось преобразование http://seophp.example.com/my-super-product.html.)
Этот URL ссылается на продукт с названием "Super Drill" (Супер-дрель) в категории "Tools" (Инструменты). Понятно, что если нужно поддерживать подобные URL-адреса, то нужен какой-то механизм выделения идентификаторов категории и продукта, на которые ссылается URL. Одним из решений, которое сразу приходит в голову, является добавление в таблицу информации о продуктах столбца, который связывает такие усовершенствованные URL с "реальными" URL, которые может обрабатывать ваше приложение. В таком запросе можно найти информацию в таблицах категорий и продуктов, выбрать их идентификаторы и использовать их.
Но мы предлагаем более простое решение, которое легче реализуется, но все-таки сохраняет преимущества URL-адресов с ключевыми словами. Посмотрите на следующие URL:
http://www.products.com/Products/Super-Drill-P9.html
http://www.products.com/Products/Tools-C5/Super-Drill-P9.html
В этих адресах присутствуют ключевые слова, но мы вставили в них еще и идентификаторы — таким образом, что это не режет человеческий глаз и не отвлекает внимание от ключевых слов, которые здесь нужны.
В первом URL правило подмены может просто выбрать число, которое добавлено
после названия продукта (-Р9), и игнорировать остальную часть URL. Во втором URL правило подмены может извлечь идентификатор категории (-С5) и идентификатор продукта (-Р9), а затем использовать эти числа для создания адресов наподобие product.php?category_id=5Sproduct_id=9
Правило подмены для URL-адресов с ключевыми словами и одним параметром выглядит следующим образом:
RewriteRule AProducts/.*-Р([0-9]+)\.html?$ /product.php?product_id=$l [L]
А правило подмены для URL-адресов с ключевыми словами и двумя параметрами
будет выглядеть так:
RewriteRule ^Products/.*-С([0-9]+)/.*-Р([0-9]+)\.html$
^/product.php?саtegory_id=$1Sproduct_id=$2 [L]
А теперь посмотрим на работу последнего правила в упражнении.

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