Делаем красивые ссылки или хороший ЧПУ в WordPress для SEO

Дата: 31.03.2009 | Рубрика: Плагины · Статьи

Сегодня, дорогие читатели, я расскажу Вам, как можно легко и просто сделать красивые постоянные ссылки (Permalinks) для страниц, категорий и новостей у Вашего WordPress блога. Чтобы все внутренние ссылки были хорошо читаемы и воспринимаемы поисковиками, т.е. ЧПУ для СЕО (как говорят в простонародье).

Началось все с того, что я подвязался сделать сайт сослуживцу, залил чистый WordPress 2.7.1 русскую версию на хостинг и начал настраивать. Добравшись до пункта «Постоянные ссылки» и указав по ссылки для постов вида /%postname%.html я подумал, а как же категории и страницы, ведь их тоже нада привести к соответствующему виду аля название.html. Пользуясь поисковиками, официальным сайтом WordPress и различными форумами я смог добиться такого результата:

Ссылка на новость — http://yourwp.ru/other/hello-world.html (/%category%/%postname%.html)
Ссылка на категорию — http://yourwp.ru/other.html (/%category%.html)
Ссылка на страницу — http://yourwp.ru/about.html (/%page%.html)


Как же этого добиться ? В этом нам помогут три плагина :

Rus-to-Lat — плагин, который переводит Вашу ссылку с русского языка в транслит, например : новость.html в novost.html. Данный плагин ставить обязательно.

.html WordPress permalink on PAGES plugin — который добавляет в урл страницы «.html»

Advanced Permalinks — несет в себе огромный функционал, с помощью которого можно сделать миграцию со старой схемы «постоянных ссылок» на новую не потеряв при этом в выдаче поисковиками.

Для того, чтобы у Вас получилась такая же схема постоянных ссылок, как и у меня, описанная выше, вам надо:

1) Активируем оба плагина, я думаю, что скачать и залить в wp-content Вы сможете и без моих пояснений.
2) Заходим в Параметры->Постоянные  ссылки, сверху появились вкладки (Defaults | Advanced | Posts | Migration | Debug), на вкладке «Defaults» в поле «Произвольно» пишем /%category%/%postname%.html .
3) Там же, переходим на вкладку  «Advanced» и в поле «Category pages:» пишем /%category%.html , так же по желанию можно в поле «Author pages:» написать /author/%author%.html .
4) Сохраняемся, тестируем полученный результат и радуемся.

Вот так, в пару кликов, Вы сможете сделать приятные ЧПУ на своем WordPress блоге.

P.S. Если Вы пользуетесь другим методом, не ленитесь, расскажите о нем в комментариях.


77 комментариев

  • 2009-04-01 в 13:09 Денис Климонтов написал:

    У меня вопрос вот какого плана. Сейчас мой блог имет ссылки вида /?p=123. Категории на русском. Названия статей тоже на русском. Я пытаюсь по данной схеме сделать все как написано, в итоге получаю 404 ошибку по любой статье, и адреса в браузере тоже оказываются на русском. Как быть?
  • 2009-04-01 в 13:27 Admin написал:

    Извините, забыл упомянуть плагин Rus-to-Lat, новость обновил, скачать плагин можно тут : http://mywordpress.ru/plugins/rustolat/
  • 2009-04-01 в 13:36 Денис Климонтов написал:

    Спасибо что так быстро среагировали. Но по-моему у них там какие-то проблемы на странице. Я был бы очень признателен если вы вышлите мне этот плагин на почту.
  • 2009-04-01 в 15:39 Алекс написал:

    Я бы еще добавил ко всему плагин <a href="http://www.wordpressplugins.ru/seo/page_htm.html" target="_blank" rel="nofollow">Page_Htm</a> от Ю.Б,
    что даст возможность сделать хвост не .html а .php
    плюс еще использовать плагин seo category
  • 2009-04-01 в 15:59 Admin написал:

    Не вижу смысла прописывать на конце php, считаю что html более красиво.
  • 2009-04-02 в 10:38 Виталий написал:

    У меня вопрос вот какого плана. Сейчас мой блог имет ссылки вида /?p=123. Категории на русском. Названия статей тоже на русском. Я пытаюсь по данной схеме сделать все как написано, в итоге получаю 404 ошибку по любой статье, и адреса в браузере тоже оказываются на русском. Как быть? Аналогичная ситуация...Rus-to-Lat тоже активировал...может есть еше решение? Вот Сайт http://modulus2.ru/
  • 2009-04-02 в 10:46 Admin написал:

    Решение есть, не очень хорошее, но всё же ...
    Вместо /%category%/%postname%.html пишем /%category%/%post_id%.html
    И соответственно меняем ссылки категорий на латинские, делается в настройках категорий.
  • 2009-04-03 в 17:03 Макс Пименов написал:

    &lt;&lt;Извините, забыл упомянуть плагин Rus-to-Lat
    Спасибо за плагин,как раз тоже очень был нужен.
  • 2009-04-07 в 15:30 websupport написал:

    Все конечно здорово, но как заставить Advanced Permalinks работать с Paginator?
  • 2009-04-07 в 15:36 Admin написал:

    А что с ним не так ?
    Пример в студию ...
  • 2009-04-07 в 15:40 websupport написал:

    Не знаю как на пальцах объяснить, вот ссылка http://ikariam.wt8.ru/blog/all/ если попробовать открыть вторую страницу то вылетает пустая страница с ошибкой вместо записей второй страницы, что делать помогите пожалуйста, заранее спасибо!
  • 2009-04-07 в 16:12 Admin написал:

    Не надо поднимать панику, это проблема не с пагинатором, а с wp темой "overeasy".
    Просто тема написана через одно место ;)
    Для тестов можете посмотреть у меня http://yourwp.ru
    Нажав на кнопку "Older Entries".
  • 2009-04-07 в 16:16 websupport написал:

    Не открывается ссылка, но вообще можно исправить как-то, чтобы на overeasy работало все?
  • 2009-04-07 в 16:27 Admin написал:

    По личному опыту скажу, лучше попроще тему взять, а карусель (слайдшоу картинок) потом вставить можно куда хочешь ...
  • 2009-04-15 в 10:29 Дмитрий написал:

    Всё сделал как написано, выдаёт ошибку в браузере, в в окне настройки ЧПУ есть надпись: Вы должны сейчас обновить файл .htaccess.
    Може в этом дело?
  • 2009-04-15 в 10:38 Admin написал:

    Естественно, лучше на время переделки ЧПУ дать на файл .htaccess права 666, после вернуть обратно.
  • 2009-04-16 в 14:19 Дмитрий написал:

    Искал на других сайтах по этой же тематике, и нашёл вот что
    "Итак если после всех этих манипуляций постоянные ссылки у вас так и не заработали и wordpress постоянно выдает ошибку 404
    То рекомендую вам проверить в настройках apache проверить директивы вашего сайта



    Options Indexes FollowSymLinks Includes MultiViews

    AllowOverride All

    Order allow,deny

    Allow from all



    Должен быть включен параметр AllowOverride All"
    Не подскажете как туда добраться чтобы посмотреть.
  • 2009-04-16 в 14:29 Admin написал:

    Пиши номер своей аськи через форму обратной связи, помогу.
  • 2009-04-23 в 19:57 Костя написал:

    Скажите, а есть ли большая разница, будет ссылка выглядеть site.com/name-post/ или site.com/name-post.html ?
    Меня интересует в первую очередь как к этому относятся поисковики, тоесть для поисковой оптимизации как лучше сделать? Или разницы никакой?
  • 2009-04-23 в 21:12 Admin написал:

    Я думаю, что разницы особой нет, это моё личное мнение, точно сказать не могу.
  • 2009-05-03 в 01:32 Константин написал:

    А у меня вообще не было файла .htaccess
    Я новый в корне создал, написал туда что просили, но безтолку...в итоге я получаю адреса такого вида:
    http://chuikoff.ru/web/моя-старая-статья.html
    Или страницы
    http://chuikoff.ru/услуги.html
    Что делать? всё делал по инструкции...
  • 2009-05-03 в 10:20 Admin написал:

    А ты плагин Rus-to-Lat поставил ?
  • 2009-05-05 в 04:49 Константин написал:

    &gt;&gt; А ты плагин Rus-to-Lat поставил ?
    Конечно...всё по схеме делаю...даже пробовал стандарты менять менять с ISO на ГОСТ и обратно...
  • 2009-05-05 в 06:01 Константин написал:

    А всё...я узнал что RusToLat транслирует только новые посты, а вот старые придётся в ручную...
  • 2009-05-08 в 12:23 Sylfer написал:

    а можно вместо html написать что-то другое?
  • 2009-05-08 в 12:34 Admin написал:

    А зачем ? (И хватит спамить)
  • 2009-05-20 в 13:34 Антон написал:

    "Константин // мая 5, 2009 at 6:01 дп" - спасибо! А то я подумал, что у меня rus to lat не работает, а, оказывается, он старые не перефигачивает. Зараза, блин!
  • 2009-06-27 в 11:04 loodsman написал:

    У меня такой вопрос, ссылки в адресной строке пишутся правельно а вот открывается 404 страница в чём проблема?
  • 2009-06-27 в 11:42 Admin написал:

    Возможно у Вас нет доступа на запись в файл .htaccess, попробуйте дать на него права 666, потом пересохраните все настройки с пермалинками и поставьте права 644.
  • 2009-06-27 в 11:58 loodsman написал:

    У меня нет доступа на запись в файл .htaccess, как можно это исправить?
  • 2009-06-28 в 15:55 Admin написал:

    Выставить права на него 666.
  • 2009-07-07 в 13:16 lospirata написал:

    Здравствуйте. Скажите, а каким образом можно перейти на красивый вид ЧПУ без потери старых страниц? Advanced Permalinks не работает.
    Имеется ввиду, чтобы посетители при поисковой выдаче заходили по старым страницам и попадали на измененные, а поисковые роботы с успехом индексировали новые страницы и подставляли в выдаче вместо старых.
  • 2009-07-07 в 13:47 Admin написал:

    Как раз это и решается с помощью http://urbangiraffe.com/plugins/advanced-permalinks/, когда будут работать и старые и новые ссылки. А со временем и поисковики поменяют адреса проиндексированных страниц.
    И не забываем, что Rus-to-Lat работает только для новых постов, т.е. Вам придется пересохранить все старые.
  • 2009-07-07 в 13:54 lospirata написал:

    А если старых постов слишком много (блог существует давно)?
    И еще, может ли быть вызвано название в url страниц русскими буквами и ошибка 404 из-за старых постов, которые работали по старому ЧПУ?
  • 2009-07-07 в 14:06 Admin написал:

    Я тебе на почту написал, чтобы не флудить.
    ЧПУ не обязательно указывать название поста, можно просто его id, типа "712.html".
  • 2009-07-15 в 23:09 Сергей написал:

    Здравствуйте! Спасибо за статью!
    Вопрос: когда делаю ссылку /%category%/%postname%.html, то некоторые записи имеют ссылку с русским названием и при клике на неё, пишет, что такой записи нет. Если сделать /%category%/%post_id%.html, то ссылки становятся не такими красивыми и имеют числовой вид statia/112.html
    Как это поправить?
  • 2009-07-16 в 08:26 Admin написал:

    Rus-To-Lat переделывает в латиницу только новые записи, для переделывания старых - их нужно пересохранить, удалив ссылку.
  • 2009-07-16 в 10:59 Сергей написал:

    Admin, спасибо огромное! Помогло! Сейчас ссылки выглядят очень красиво и на латинице.
  • 2009-08-02 в 00:49 Портал Рекламный Щит написал:

    Вопрос у меня на сайте нормальные ссылки?
    /%category%/%postname%/ вот что стоит в поле произвольное нужно ли пользоваться вашим советом
  • 2009-08-03 в 17:11 Admin написал:

    Это уже на Ваше усмотрение, в принципе не обязательно.
  • 2009-08-22 в 00:01 Сергей написал:

    На предыдущем блоге у меня по Вашей рекомендации всё получилось, ещё раз спасибо.
    Сейчас настраиваю другой сайт, но получается только наполовину:
    1. Работает только при /%category%/%post_id%.html. При /%category%/%postname%.html - выдаёт ошибку 404. Но это нормально- главное, что заработало.
    2. Категории создаются как надо, а вот со страницами записей ничего не получается. Так и остаётся вида:"94.html".Что только не делал.
    3. Все плагины установлены, но при редактировании записи, в том месте, где можно редактировать ссылку у меня нет кнопки "редактировать", а вместо неё -"настроить вид ссылок" и при нажатии на неё кидает в настройку ЧПУ.
    Чего-то чуть-чуть не хватает, но я сам не могу разобраться.
    P.S. По началу вообще, что не делал- ошибка 404, так я по совету добавил в хтаксесс строку:" php_flag default_charset windows-1251" и после этого заработало.
  • 2009-09-20 в 15:39 Димон написал:

    Спасибо большое!!
  • 2009-10-12 в 18:46 Постоянные ссылки написал:

    спасибо за статью, помогло. только один вопрос: можно ли то же самое сделать с ссылками меток? если метка имеет вид - .../tag/plitochnyj-klej - то можно ли сделать так, что бы в конце дописывалось - .html ? Заранее спасибо.
  • 2009-10-12 в 21:30 Admin написал:

    Пока ничего сказать не могу, вроде пока не натыкался.
  • 2009-10-21 в 12:35 Дмитрий написал:

    Здравствуйте.
    Красивые ссылки работают, но появилась проблема - урл картинок стал www.site.ru/krasivaya-ssylka/wp-content/uploads/images/image320.jpg Т.е. появилось krasivaya-ssylka/ и соответственно картинки не отображаются. Подскажите пожалуйста как решить эту проблему.
    Заранее спасибо.
  • 2009-10-21 в 13:02 Admin написал:

    Гы, а это дело в кривых плагинах. Это у Вас картинки постов в теме или в карусельке не отображаются ?
  • 2009-10-21 в 13:02 Admin написал:

    Пишите номер аськи в форму обратной связи, помогу.
  • 2009-10-28 в 13:01 Arbalet написал:

    А есть ли подобные плагины для настроек тегов? В виде http://reznoe.info/tag/stanki.html
  • 2009-10-28 в 13:12 Arbalet написал:

    Дмитрий, у вас скорее всего ссылки на картинки прописаны с относительным адресом "wp-content/uploads/images/image320.jpg". Попробуйте задать абсолютный путь в Настройки/Разное в админке Wordpress. Примерно так http://ваш_сайт.ru/wp-content/uploads/images
  • 2009-11-30 в 01:42 Елена написал:

    А может кто-нибудь мне подсказать, чем плохи ЧПУ на русском? Лично мне нравится, не понимаю, зачем их переводить на латиницу. Вот в Википедии ЧПУ как раз на русском.
    Думаю, что и поисковикам такие ссылки должны понравиться.
  • 2009-12-03 в 16:19 Евгений написал:

    У меня была такая проблема:
    -ссылки в адресной строке пишутся правильно, а вот открывалась 404 страница.

    Большое спасибо за совет:

    Admin // Июн 27, 2009 at 11:42 дп
    Возможно у Вас нет доступа на запись в файл .htaccess, попробуйте дать на него права 666, потом пересохраните все настройки с пермалинками и поставьте права 644.

    Поменял права, все заработало.
  • 2009-12-07 в 19:30 Читер написал:

    Все бы ничего, только я поздно сообразил, что надо рус-ту-лат ставить и все старые ссылки у меня будут русские (около 1000), в связи с этим вопрос.. никто не знает, как автоматически все старые ссылки сменить? мб плагин какой? :)
  • 2009-12-27 в 15:04 постраничная навигация написал:

    Все-таки не понятно, как создавать чпу для ссылок страниц внутри категории? Почему работает так: ^blog/page/([0-9]+)$ /blog/?paged=$1 [L], но не работает так: ^blog/mycategory/page/([0-9]+)$ /blog/?cat=1?paged=$1 [L] ???
  • 2009-12-27 в 22:35 Admin написал:

    ^blog/mycategory/page/([0-9]+)$ /blog/?cat=1&paged=$1 - так правильнее.
    И я не понимаю, зачем правила реврайта писать руками, а не использовать встроенный механизм.
  • 2009-12-27 в 23:31 постраничная навигация написал:

    Может, проще тем, кто использует вордпресс и не вникает в его тонкости. Они находятся как в банке и зависят от "ляпов" разработчиков. Когда начинаешь прикручивать к блогу множество разных плагинов и нововведений, получаешь массу несовместимостей одних плагинов с другими. Вы еще подключите qTranslate к блогу, потом поймете, что ничем кроме как "ручками" эти бяки не исправить. Встроенный механизм работает, если его поставить на голый WP. Причем замечу, что не у всех этот "механизм" может перезаписывать файл .htaccess. У меня вот он не через какую ж. не перезаписывается. Так что, остается только извращаться и методом тыка исправлять кривые руки программистов WP.

    p.s. кстати, в который раз убеждаюсь в бездарности русских программистов и более того: всяких советчиков, если касается дело, чтобы что-то исправить или помочь. Задорнов оказался не прав: это русские тупые. Решение своей прошлой проблемы я нашел на американском форуме. Там хотя бы люди умееют перед тем, как что-то подсказать, понять, с чем вообще имееют дело.

    еще один p.s. проблема с постраничными категориями - это баг самого WP - доказано.
  • 2009-12-28 в 08:44 Admin написал:

    Ваш пост - полный бред. Если у Вас не перезаписался файл htaccess, то в этом виноваты только Вы, т.к. не выставили права на запись этого файла.

    Плагины же пишут не разработчики Wordpress, а такие же люди, как мы с Вами, и естественно они не учитывают совместимости одних плагинов с другими.

    Про бездарность русских программистов - самый большой бред, т.к. программисты бывают "бездарные" (интересно что это за дар такой) и нет, но это никак не зависит от национальности, пола и цвета кожи.

    И самое главное, как о бездарности может говорить человек, который смотрит Задорнова ?
  • 2009-12-30 в 22:43 MC с блога написал:

    Спасибо большое!!! Очень удобно стало и очень практично! Вопрос. А sape тогда надо же будет полностью сайт переиндексировать, получается??
  • 2009-12-30 в 23:53 Admin написал:

    Да, надо переиндексировать.
  • 2010-01-08 в 11:37 ice10 написал:

    автору спасибо, но вот 301 редирект не заработал, да и не сильно я уверен, что PR внутренних страниц перетечет, плагин Advanced Permalinks мне не сильно понравился, если есть какие-то альтернативы, буду признателен, так же при проверке внутряка по sitemap.xml выдает не 301, а 302 редирект + ошибку апача, а это уже не то пальто, тем более что с Яндексом тоже хочется дружить; затея была использовать ЧПУ страниц, что и применю, а посты пусть остаются по-старому.
  • 2010-01-19 в 23:29 Adrian написал:

    Автор, огромное тебе спасибо!!! Благодарен тебе! Удачи)))
  • 2010-02-13 в 17:27 n_a_ написал:

    Подскажите, есть ли возможность как-то укоротить длинные ссылки? У меня полно длинных ссылок, есть и в 2-2,5 раз длиннее, чем ссылка этой страницы. Название постов укоротить по некоторым причинам не могу. Можно ли каким-то образом оставлять, допустим, несколько десятков символов в чпу?
  • 2010-02-13 в 20:49 Admin написал:

    В самом редакторе поста/новости Вы можете сами задать ссылку, или изменить ссылку созданную автоматически.
  • 2010-02-24 в 00:52 Search Boat написал:

    Уже не в первый раз нахожу на вашем сайте то, что искал. Спасибо за грамотную помощь!!
  • 2010-02-28 в 01:52 Владимир написал:

    тестировал блог на денвере.
    Установил Advanced Permalinks и соответствующие настройки. Получил ссылки вида: http://blog.loc/запись.html
    Решил привести к такому же виду и страницы. Установил плагин .html Wordpress permalink on PAGES и...
    В окне враузера выводится то что надо, т.е. http://blog.loc/категория/запись.html, а на экране "Error 404 - Not Found
    Sorry, the page that you are looking for does not exist".
    Что случилось и как исправить?
    Подумал "...у Вас нет доступа на запись в файл .htaccess, попробуйте дать на него права 666, потом пересохраните все настройки с пермалинками и поставьте права 644"

    В таком случае, как это сделать на денвере(пошагово)?
    Спасибо.
  • 2010-04-04 в 16:49 Pirat написал:

    Catchable fatal error: Object of class WP_Error could not be converted to string in /home/comadvi/public_html/domen.ru/wp-includes/pluggable.php on line 879

    В чем может быть дело?
  • 2010-05-05 в 03:48 вопрос о ЧПУ написал:

    Меня интересует генератор ЧПУ на русском языке, как в wiki.
    Пример:
    http://ru.wikipedia.org/wiki/ЧПУ_(Интернет)

    В частности реализация на JOOMLA
  • 2010-07-20 в 20:54 Павел написал:

    Ссылка на статью - http://yourwp.ru/other/hello-world.html - согласен правельно

    Ссылка на категорию - http://yourwp.ru/other.html (/%category%.html)
    Несогласен, дожно быть так http://yourwp.ru/other/ + (и работать без завершающего "/")
    Короче незнаю как так сделать :-(

    Ссылка на страницу - http://yourwp.ru/about.html (/%page%.html) согласен
  • 2010-10-08 в 20:15 Cooler написал:

    Блииин. На одном сайте все ок, на другом, ничего не получается. Так все ок, но если нажать читать полностью статью, то ошибка 404!! Уже 666 ставил, обновлял плагины, переактивировал, в чем может быть дело??
  • 2011-02-13 в 15:46 Профи написал:

    Мне удалось добиться полного русского чпу, даже метки русские, так выглядит:
    http://станьпрофи.рф/создание-сайтов/технологии/движок-сайта-или-cms/#статья-72
  • 2011-07-26 в 14:13 Садовод написал:

    Огромное спасибо за данную подборку плагинов и несложное решение по изменению адресов для старых постов. Искал решение несколько месяцев, т.к изначально использовал статические адреса и успел написать больше 200 постов. Кстати, если у кого не отображаются картинки после внедрения плагинов, то мне помогло добавление перед путём до картинки - слеша. Ещё раз спасибо, автор блога очень помог!!!
  • 2011-10-03 в 04:16 Денис написал:

    В чем проблема всю ночь ковырял так и не разобрался, поставил Advanced Permalinks
    перевел сайт на новый ЧПУ, и сразу появились две проблемы
    1 - рубрики по новому названию все выкидывает на главную страницу как если бы она была не статичная а по умолчанию,
    2 - при переходе на любую страницу пустой экран
    может кто-нибудь поможет а то не могу уже кофе пить ) , вот сайт http://aktau-info.com/
  • 2011-11-14 в 19:53 Dr.Silent написал:

    все прекрасно работает! спасибо за информацию! но есть одно но, как сделать так чтобы и новые метки (теги) тоже были в транслите?
  • 2011-11-14 в 21:47 Admin написал:

    Предлагаю Вам для транслитерации использовать этот плагин:
    http://ru.forums.wordpress.org/topic/cyr-to-lat-30
  • 2011-12-03 в 16:16 Shredder написал:

    Для WP 3.2/3.3 тоже только таким путём можно сделать? Встроенного механизма ещё не появилось?
  • 2011-12-03 в 16:41 Admin написал:

    Стандартный механизм - есть и был всегда, только не полностью функциональный.
  • 2011-12-13 в 21:46 Олег написал:

    Добрый вечер, всё сделал по инструкции, ссылки стали красивыми, но вот беда, вторая страница с записями не открывается, просто открывается страница где написано урл/page/2 и пустая страница, если вместо вот этого "на вкладке «Defaults» в поле «Произвольно» пишем /%category%/%postname%.html ." сделать по умолчанию, то всё работает, но ссылки естественно не красивые, помогите плиз победить, что делаю не та?!
  • 2011-12-13 в 21:54 Admin написал:

    Олег, задавайте вопрос в форуме, там удобнее переписываться.
    Для решения проблемы от Вас необходимо:
    1) Скриншоты настроек плагина и ЧПУ
    2) Урл Вашего сайта
    3) Нет ли каких-либо плагинов кэширования ?

    Коментарии к этой записи я закрываю, дальнейшее общение по этой теме в форуме:
    http://wp-skins.info/forum/post36.html