Ссылка на оригинал
Шаг 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 на русском языке. Подробно и с примерами.
Продолжение следует...
(примечание: от себя хочу добавить, что так как я пользуюсь движком WordPress, то у меня вопрос замены динамических на статические ссылки решается в админ панели, вкладка Настройки в разделе Постоянные ссылки)