Ссылка на оригинал статьи Winka

Шаг 3. Псевдостатика

Все странички нашего сайта имеют адреса вида /?page=main, /?page=news и т.д. От таких динамических ссылок и будем избавляться.
Для чего это надо:

Поисковики лучше индексируют статические странички

Для каждого сайта существует предельное количество динамических страниц, которые могут быть проиндексированы

Для сайта с динамическими ссылками поисковики не индексируют странички с более чем третьим уровнем вложенности

Если мы будем размещать на сайте рекламу или продавать с него ссылки - статические странички покупают намного охотнее

URL страниц выглядит понятнее для человека (ЧПУ).

Спрятав имена принимаемых параметров мы в некоторой степени усложним задачу хакерам

Начнем с самого простого - ссылку ваш_url/?page=news преобразуем в ваш_url/news/
Открываем .htaccess и добавляем следующие строки:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^news([\/]?)$ /?page=news [L]

Если разобрать подробнее, то строки:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

задают условие, когда начнет срабатывать преобразование: "если физически на сервере нет папки или файла с таким именем"

Модификатор [L] (Last) указывает, что если замена прошла, то следующие условия не проверяем.

Регулярное выражение ([\/]?) говорит о том, что в конце URL может быть закрывающий слэш (а может и не быть). Т.е. одинаково будет работать как ссылка ваш_url/news/ так и ваш_url/news

После этого введя в адресной строке ваш_url/news/ получаем страничку, которая отдавалась при вводе ваш_url/?page=news
Осталось открыть код сайта и заменить все динамические ссылки /?page=news на их статический аналог.

Немного усложняем задачу и разбираем страничку каталога товаров.

Основная страничка каталога: /?page=catalog будет иметь вид /catalog/

Страничка разделов "Микросхемы", "Транзисторы" и т.д.: /?page=catalog&cat_Path=NNNN (NNNN - числовой код раздела) преобразуется в /catalog/NNNN/

Внутри разделов товары делятся на несколько страничек вида /?page=catalog&cat_Path=NNNN&p=MM (MM - номер страницы). Из них получим ссылки вида /catalog/NNNN/pageMM.html

Соответствующие строки замены добавляем в .htaccess чуть ниже:

RewriteRule ^catalog([\/]?)$ /?page=catalog [L]
RewriteRule ^catalog/([0-9]+)([\/]?)$ /?page=catalog&cat_Path=$1 [L]
RewriteRule ^catalog/([0-9]+)/page([0-9]+).html([\/]?)$ /?page=catalog&cat_Path=$1&p=$2 [L]

Осталось опять залезть в код и заменить динамические ссылки их новыми аналогами (хм... на это потребуется время...)
Все остальные преобразования аналогично.

Момент, на который стоит обратить внимание - к одной и той же страничке теперь можно обратиться двумя разными способами. Чтобы роботы ПС не лазили по динамическим ссылкам нужно написать также правила, которые будут перенаправлять робота с динамической ссылки на статическую. Но поскольку мне лень писать кучу правил для редиректов, то воспользуюсь тем, что проиндексированных страниц ещё практически нет и правила писать не стану, а сделаю гораздо проще (об этом будет позже)

Ну и для "внеклассного чтения" нашел себе несколько ссылок о работе c mod_rewrite на русском языке. Подробно и с примерами.
Модуль Apache mod_rewrite
Преобразование динамических URL в статические
Преобразование ссылок с помощью Apache

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

От dmitry

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *