Настройка постоянных ссылок URI
Постоянная ссылка (Permanent Links) каждой страницы очень важно для оптимизации сайта в поисковых системах. Даже в рекомендациях Яндекса и Гугла можно прочесть о том, что поисковые роботы лучше воспринимают сайты с ЧПУ ссылками, нежели урлы с встречающимися в них знаками вопросами и порядковыми номерами статьи.
Постоянная ссылка: настойки постоянных ссылок
Настройку постоянных ссылок поддерживает не каждый движок (cms), однако вы в любом случае, сможете преобразовать в ЧПУ некорректный вид ссылки, используя директивы .htaccess. В WordPress и многих других современных движках вы найдете эту опцию настройки ЧПУ, встроенную непосредственно в cms. Для этого необходимо, чтобы хостер позволял вам вносить изменения в htaccess. По дефолту во многих движках установлены ссылки вида ?p=post, но для оптимизации сайта намного лучше использовать ссылки вида /post-name/, либо /category/post-name/.
Если вы неожиданно решили изменить адреса страниц на постоянные ссылки в wordpress, вам поможет плагин Redirection plugin, который будет создавать 301 ошибку, если страницы больше не существует. Это позволит вам изменять постоянные ссылки в SEO-подобные без необходимости использования чего-нибудь еще и не беспокоиться о результатах поискового продвижения.
Постоянный адрес вашей ссылки .htaccess ЧПУ
Если ваш движок все-таки не поддерживает чпу, вы можете настроить .htaccess, чтобы сделать ссылки постоянными.
Для начала убедитесь, что у Вашего хостера установлен mod_rewrite.
Первой строчкой включаем Rewrite Engine:
RewriteEngine on
RewriteBase /
Далее мы должны дать понять нашему серверу, по каким правилам он должен выдавать содержимое. Начнем с самого простого:
RewriteRule ^script.html$ script.php
Теперь мы можем вызвать script.php, как script.html (символ $ означает конец строки - в нашем случае правила перезаписи, через пробел указан реальный файл). Но что делать, если у нас есть динамично изменяющийся параметр в адресе?
RewriteRule ^news/([0-9]+).html$ news.php?id=$1
В этом примере параметр id скрипта news.php может принимать лишь числовые значения - о чем нам говорит место "([0-9]+)". Сформированный адрес будет выглядеть как news/1.html вместо news.php?id=1. Тут в принципе всё просто - но у Вас, скорее всего, возник вопрос "а что делать если динамично изменяющийся параметр принимает буквенные значения?" - просто пишем "([a-z]+)" - не стоит радоваться тут мы разрешили писать лишь буквы в нижнем регистре - а есть ещё и верхний, тогда "([A-Za-z])+". Если у Вас используются русскоязычные заголовки, напишите ф-ю для перевода кириллицы в транслит.
RewriteRule ^cat/([0-9]+)/page/([0-9]+).([A-Za-z]+).html$ arhive.php?cid=$1&page=$2&author=$3
В итоге у вас получится файл следующего содержания:
RewriteEngine on
RewriteBase /
RewriteRule ^script.html$ script.php
RewriteRule ^news/([0-9]+).html$ news.php?id=$1
RewriteRule ^cat/([0-9]+)/page/([0-9]+).([A-Za-z]+).html$ arhive.php?cid=$1&page=$2&author=$3.
|