Столкнулись с необходимостью написания ЧПУ в одном из проектов и делимся опытом по этому поводу.

Дано:

  • Сервер под управление Apache;
  • Скрипт, который выдает разный контент исходя из GET параметров;
  • Ссылки вида http://site.com/?page=contacts нужно привести к http://site.com/contacts/;
  • Необходимо прописать переадресацию со старых адресов на новые.

Все находится в файле .htaccess. Все подробно комментировано.

Статья про регулярные выражения уже была, подробно останавливаться на этом нет смысла.

ЧПУ

«Волшебство» преобразований происходит благодаря флагу QSA (query string append), указанному в квадратных скобках после каждого правила. Если строка запроса удовлетворяет правилу, то она является эквивалентом указанного адреса, и выдает тот же самый контент.

Например, RewriteRule ^news/?$ ?page=news [L,QSA] и обратиться к сайту по адресу /news/, то:

  1. Строка запроса /news/ совпадет с указанным в правиле, значит это правило сработает;
  2. Флаг L (last) указывает, что после этого правила другие применяться не будут;
  3. Флаг QSA указывает на подстановку строки запроса и её НЕ ЧПУ аналог;
  4. Строка запроса /news/ аналогична НЕ ЧПУ адресу ?page=news;
  5. По запросу /news/ выводится контент точно такой же, как и если набрать ?page=news.

После этого остается написать редиректы с 301 кодом (постоянный редирект), чтобы случайно не получить дубли страниц в поиске.

Редиректы

Переадресацию прописать можно несколькими способами.

С первыми двумя все ясно. Старый адрес, потом новый. Если писать не Redirect, а RewriteRule, то нужно еще указать флаг R и код редиректа.

Третий вариант перенаправляет по новому адресу по различным GET-параметрам.

RewriteCond определяет условие сработает правило RewriteRule.

  • REQUEST_URI — Адрес, по которому осуществляется запрос;
  • QUERY_STRING — Строка с GET-параметрами.

Если оба этих условия совпадают, то срабатывает правило, по которому с указанного адреса посетителя сайта переадресуют на указанный новый.


Представленные примеры позволяют подготовить самописный сайт без ЧПУ к продвижению в поиске.


Оставить комментарий