Home » Движки сайтов и блогов » Настройка вида URL постов в WordPress

Настройка вида URL постов в WordPress

Более года назад я уже писал про оптимизацию URL. За это время мое понимание этого вопроса улучшилось и я хочу снова коснуться этой темы, на этот раз только в контексте Вордпресса. К тому же, я еще расскажу про полезные плагины, улучшающие возможности Вордпресса в этом вопросе.

По умолчанию, сразу после установки WordPress, создаваемые посты имеют URL вида:
http://myblog.ru/?p=post_id
где post_id — это уникальный идентификатор поста в базе данных.

Естественно, что ссылки такого вида ничего не говорят о содержимом страницы ни пользователям, ни для поисковым системам. Сравните, например, такие урлы:

mygames.ru/?p=182

mygames.ru/igra-super-korowa

Очевидно, что второй URL более информативен. Учитывая, что ПС научились в выдаче подсвечивать слова из запроса, присутствующие в URL, то это еще более увеличивает его CTR. Кроме того, сами ПС учитывают ключевые слова в URL при ранжировании.

Вот один из результатов поиска в Гугле по запросу [супер корова], часть урла выделена жирным (помечено желтым фоном мной):

ЧПУ выделен в СЕРПе

Итак, надеюсь, я вас убедил в том, что лучше использовать на своем блоге или сайте “красивые” ссылки, называемые, также, ЧПУ — Человеко Понятные Урлы или пермалинки (от английского permalinks — permanent links — постоянные ссылки). Давайте теперь посмотрим, как это сделать.

Настройка ЧПУ в Вордпрессе

Когда я впервые осваивал Вордпресс, то после установки сразу пошел искать плагин для ЧПУ. Но все оказалось гораздо проще — эта возможность есть в самом Вордпрессе. Выбираем в админке Settings –> Permalinks и переходим на страницу настройки ЧПУ:

permalinks

Кроме варианта по умолчанию предлагается еще три предопределенных вида ссылок:

  • день и название — URL состоит из года, месяца, дня и названия поста
  • месяц и название — аналогично предыдущему, но не используется число месяца
  • числовой — id поста передается не параметром, а содержится в ссылке, этот вариант принципиально не отличается от варианта по умолчанию

Но есть еще последняя опция, Custom Structure, которая позволяет задать произвольный вид ссылок. Например, в представленном на картинке варианте URL будет состоять из названия категории и поста.

В качестве названия поста (%postname%) используется не заголовок (title), который может содержать недопустимые в URL символы, а параметр, называемый permalink (называемый иногда slug), который создается автоматически из заголовка, но может и редактироваться вручную.

permalink

На картинке вы видите русский permalink, при этом русские буквы заменены на их коды (про особенности работы с русскими буквами далее).

С точки зрения оптимизации и логичности структуры ссылок вариант “название_категории/название_поста” мне нравится больше всего. Во-первых, сразу понятно, к чему относится данная страница. Например:

  • games.ru/arkadnye-igry/super-korova/
  • games.ru/logicheskie-igry/10-talismanov/
  • games.ru/flash-igry/10-talismanov/

Во-вторых, убрав правую часть урла (название поста) можно сразу попасть на соответствующую категорию.

Если пост принадлежит нескольким категориям, то для формирования URL будет использована категория с наименьшим id (но это можно изменить с помощью плагина, о котором я расскажу дальше). Кроме того, пост будет доступен по любому URL вида site.ru/что_угодно/название_поста (но с точки зрения SEO и дублированного контента следует всегда использовать один и тот же URL для ссылки на пост).

Одним из недостатков такой структуры URL является то, что при переносе поста из одной категории в другую (или при добавлении в категорию с меньшим id) изменится URL, формируемый Вордпрессом (но, как я уже писал выше, пост останется доступен и по старому URL), что приведет к дублированию контента и может понизить ранжирование страницы в ПС.

Другим недостатком является предупреждение в документации Вордпресс по пермалинкам о том, что “starting Permalinks with %category% is strongly not recommended for performance reasons” (использовать постоянные ссылки, начинающиеся с %category% не рекомендуется из-за проблем с быстродействием). Впрочем, я поэкспериментировал с различными видами пермалинков и существенных отличий в производительности не заметил.

URL вида “год/месяц/название_поста” является, также, неплохим вариантом. Мне, как пользователю, очень удобно, когда сразу в результатах поиска видно, когда пост был написан, т.к. если я ищу свежую информацию, то мне не интересны старые статьи. Именно по этой причине мне, как блоггеру, этот вариант сейчас не нравится. Ведь пользователь может все равно найти нужную информацию на моем сайте, подписаться на RSS или заинтересоваться рекламой :-).

Кроме того, такой вид URL нежелателен, если вы любите “поднять” старый пост, изменив дату его создания на текущую. Такой подход удобно использовать, например, в игровых партнерках — когда долго нет новых игр, можно “достать” прошлогодний хит.

Для обычного блога я рекомендую использовать один из этих вариантов. Но для других применений (партнерские сайты и т.п.) другой вид ЧПУ может оказаться удобнее. Подробнее о пермалинках в Вордпрессе читайте документацию (на английском).

Русский язык и ЧПУ

Вордпресс без проблем работает с русским языком. Это касается и пермалинков — вы можете использовать русский язык почти так же, как и английский. Единственная проблема заключается в следующем. Длина поля базы данных для хранения permalink составляет 200 однобайтовых (латинских) символов. В случае с английскими символами длина permalink ограничивается именно этими 200 символами. Но в случае других языков (не латиницы) происходит преобразование в кодовую последовательность, в которой каждой русской букве соответствует 6 символов (например, русская буква “а” будет заменена на “%D0%B0”), т.е. вместо 200 символов длина русского permalink составляет всего около 33, остальные символы будут обрезаны.

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

Если же этой длины пермалинка вам недостаточно, то можно использовать транслитерацию или английский вариант названия. Для транслитерации удобно использовать плагин RusToLat, который автоматически преобразует русское название поста в транслитерированный эквивалент.

ПС понимают транслитерацию и улучшают ранжирование страницы, URL которой содержит ключевые слова.

Плагины, упрощающие работу с ЧПУ

Плагин sCategory Permalink позволяет при создании/редактировании поста выбрать категорию, которая будет использоваться для формирования ЧПУ.

Плагин sCategory Permalink

Это позволяет избежать проблем, связанных с переносом поста между категориями и выбрать главную категорию для отображения в URL поста.

Второй плагин, Advanced Permalinks, имеет более широкие возможности. В частности, он позволяет:

  • Безболезненно перейти от одного вида ЧПУ к другому. При этом старые постоянные ссылки для старых постов будут формироваться как и раньше, а для новых уже по новым правилам. Впрочем, с помощью этого плагина можно изменить структуру и для всех постов, включив 301-й редирект для старых ЧПУ.
  • Создавать разные виды ЧПУ в зависимости от категории.
  • Использовать ЧПУ категорий без базовой части (между именем домена и названием категории).

 

  • Наличие ЧПУ уже стало классикой во всех популярных CMS. Правда я не понял до сих пор зачем нужны русские буквы в url.

  • На русском языке понятнее и пользователям и ПС.

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

  • В вашем случае можно обойтись и без плагина – ссылки по умолчанию будут работать всегда, просто появится редирект на новые ссылки.
    Пропадание из индекса маловероятно.

  • нечего нового..

  • Александр

    Кому-то ""ничего нового"", а от меня — СПАСИБОЧКИ. Наверняка в скором времени я бы до такой "темы добрался" и начал искать специальный плагин-ни за что не полез-бы в сам WP. Не по славянски это – инструкцию читать… Еще раз спасибо.

  • Няшя

    Делаю свой блог на wordpress.com – скажите, можно ли сделать следующее:

    1. убрать задержки перед отправлением нескольких мессаг, так как юзера выбрасывает на страницу "вы слишком быстро постите", либо же вообще мессага не проходит, а помечается как спам

    2. убрать из поля ответа графы E-mail и Сайт

    3. аналогично добавленным здесь кнопкам [b], [i] (и так далее) добавить кнопки вставки смайликов (своя подборка), картинок, ссылок и так далее

    4. юзер без регистрации мог изменять и удалять свои комментарии (например определяется по ip)

  • Няшя

    5. юзер без регистрации мог выбирать аватару со своего компьютера либо url (подгоняется под размер автоматом если что)

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

  • Если найти соответствующие плагины или написать их самому, то можно.

  • Делаю эти пермалинки, поставила в ЧПУ /%postname%/
    плагин рустотал деактивирован, но ссыки все равно входят на латинице, а клиент хочет на русском. Что делать? ручками что ли перебивать?

  • Старые линки, сделанные с плагином RusToLat, будут в транслитерации. Менять придется либо руками, либо написав небольшой скрипт на PHP.

  • Valeriy123

    1) А есть ли возможность выводить подкатегории (без категории) без использования плагина sCategory Permalink? Он для версии WP 2.8.2 включительно и не известно будет ли работать корректно на новых.
    2) Многие сталкиваются вышеописанной Вами проблемой, когда /%category%/ формируется на основе наименьшего id. Однако есть простое решение: при публикации статьи надо указывать лишь подрубрику, т.е. ставить одну галочку. Тогда выводиться будет категория с подкатегорией. Например, если есть рубрика “Статьи” и в ней подрубрика “ВордПресс”, то получим – http://www.ваш_сайт.ru/stati/wordpress/и_далее_название поста…
    3) А зачем указывать .html. Есть ли в этом какие-то плюсы, кроме смысловой нагрузки?

    • 1) Я как писал, без плагина используется (под)категория с меньшим id. Если создать сначала подкатегории (без родителя), потом категории и после этого распределить подкатегории родительским категориям, то должно получиться.
      По идее, плагин должен работать и с 2.9.2.

      3) Например, если по каким-либо причинам хочется создать видимость статического сайта. Но на ранжирование в ПС это не влияет, так что таких причин я не вижу.
      Как еще одни вариант – сделать сайт-визитку фирмы на вордпрессе, используя готовый шаблон и расширения .html, а потом с помощью телепорта или подобной программы превратить его в действительно статический сайт.

      • Valeriy123

        Если сперва создать подкатегории, а затем категории, то понятно что работаь будет как надо. Но вот когда сайт уже существует и сперва создавались категории, а потом подкатегории, то надо понижать id или еще что-то делать. Ну или удалить все категории создать их заново и раскидать статьи обратно. Но это уж совсем извращение.
        Кстати, я тут случайно наткнулся на более свежий плагин “Remove Parents”, который удаляет категории, оставляя лишь подкатегории. Не проверял, но думаю должно работать как надо
        И еще нашел статью, в которой админ одного из сайтов описал след. проблему: у него стояли два плагина одновременно All Seo и Seo Without categoty. Так вот, он обнаружил, что часть страниц выдают ошибку и не открываются через поиск. Решить проблему ему удалось именно добавлением .html к окончанию статей. В результате и плагины корректно заработали, и страницы выпадать не стали. Не уверен, насколько это характерный глюк, но думаю .html добавить, во избежание каких-либо возможных проблем и косяков.

  • Валерий

    Сейчас как раз задумался изменением ссылок. У меня изначально настройка как раз была сделана через /?… Столкнулся с рядом проблем, а потому хочу спросить вот что:

    1) Вы пишите про работу с русскими ссылками. Пробую сперва на Денвере и получается, что ссылки с русскими буквами как раз отображаются %-й кодировкой. Но я вижу много сайтов где в строке браузера русские буквы, а не %-ты. При наведении на такую ссылку виден адрес ссылки через транслитерацию. Как этого достичь и почему может не работать?

    2) Как быть со старыми постами? Устанавливаю Rus2Lat и все работает лишь при формировании нового поста. А старые становятся как раз длинными последовательностями символов из %-в.

    3) Можно ли сделать так: устанавливаю плагин редиректа, в ЧПУ пишу /%post_id%/%postname%/, а затем вручную через быстро редактирование меняю на английские названия ссылок. И можно ли все названия ссылок при формировании статей задавать вручную? Я специально пишу длинные названия и при ссылки получатся очень длинными и некрасивыми. Лучше бы было укоротить в последовательности, более воспринимаемые посетителями.

    • 1) Все правильные ссылки содержат вместо русских букв их коды с процентами. Просто современные браузеры умеют их декодировать и отображать русские буквы. Вы уверены, что смотрите одним и тем же браузером свой и чужие сайты?

      2) Тут два варианта: либо ручками открыть каждый пост и пересохранить, либо написать скрипт или плагин, который сделает тоже самое автоматически.

      3) Можно, почему нет?

  • Валерий

    Да, смотрю и свой и чужой сайты через один браузер. Не у многих, но у некоторых есть фишка, что ссылка в Яндексе пропсывается русскими буквами, а при наведении видна транслитерированная ссылка. Не знаю точно, в чем тут секрет. Я один из таких сайтов открыл через браузер в виде html кода и обнаружил, что сайт сделан на DLE. Может в DLE подобная фишка реализуется автоматом, а в WordPress, как я понял, такое чудо не заложено. Может и есть какие-то плагины, но я поискал, и не нашел ничего подобного. Может не там искал? :(

    • Можете дать ссылку на такой сайт? И уточните, какой у вас браузер?

  • вот всё никак не решу делать чпу или нет

  • Александр

    спасибо за идею. Стоял первый плагин, но после последнего обновления вордпресс перестал работать. Уже начал переносить сайт (500 статей) на джумлу, потому что слетали все статьи, а вордпресс начал глючить. Поставил адвансе пермалинк, убрал s и все заработало даже без доп настроек. А сколько я мучался с этим скатегори пермалинк.

  • Vitaly Kavaz-ogly

    Спасибо автору! Можно чуток прокачать статью по запросу типа “плагин wp назначить базовую рубрику для поста” или что-то в этом роде. На подобный запрос выдается все что угодно, кроме того, что нужно. А ответ с трудом нашел чудом попав на эту страничку!