Pathauto

Модуль pathauto - автоматические ЧПУ (человечески понятные урлы)

Модуль pathauto появился много лет назад (уже можно так говорить) и сразу же попал в список обязательных для установки. В своё время (в шестом году) я перелопатил его до последнего байта в стремлении прикрутить корректную работу кириллических ссылок. Это у меня получилось в конце концов, при чём, что важно, лишь с правкой ядра друпала, т.к. ограничения (для использования ссылок типа mysite.ru/вот-такая-ссылка - на русском) были не (только) на "уровне модуля". В следующих версиях уже появилась возможность просто добавлять кириллицу, но на своих главных проектах я по-прежнему пользовался собственной версией pathauto.
Со временем я пересмотрел подходы к pathauto, за несколько лет использования на сайтах различной "толщины" (объёма/посещаемости/хостинга/структуры/итп) появился опыт. Чем и хочу поделиться (точней - чтобы самому не забыть).

Установка pathauto

Итак, глянем, что там нонче за последняя версия. Ага, вижу, что спустя более чем годичного перерыва - таки обновился до версии 6.2. /* Почему я лишь сейчас (в момент написания данного материала) узнал про обновление? По умолчанию в друпале стоит галка проверять, но я её снимаю - об этом попозже подробней). */
Стандартно распаковываем, заливаем на сайт. Ага, облом, для работы (обязательно) потребуется ещё и модуль token, который позволяет другим модулям использовать "токены" - переменные, в которых с помощью разных настроек можно отображать разную информацию сайта (имя пользователя, словарь, термин, дату и т.д.). Скачиваем и включаем обоих.

Настройка pathauto

Кто первый раз сталкивается с модулем pathauto - не ищите его управление в "Настройке сайта", он размещается там, с чем работает - в "Синонимах". Пройдёсь по всем значимым пунктам настройки.

Основные настройки pathauto

  • Подробности
    Отображать изменения синонимов (кроме массового обновления).

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

  • Символ, разделяющий слова в заголовках. Им заменяются все пробелы и символы пунктуации. Использование пробела или символа + может привести к непредвиденным результатам.
  • Весьма важный пункт. И для "внешнего отображения" и для SEO. Когда-то давно мне страшно не нравилось использовать минус в качестве разделителя и я использовал "_". Однако опыт показал, что, действительно, рекомендации использовать для разделения слов именно минус, а не подчёркивание - справедливы. Объясняется это тем, что знак подчёркивания якобы воспринимается Google сотоварищи как символ слова и в результате слово no_index будет воспринято как одно слово (из восьми знаков), а no-index - два, "no" и "index".
    С другой стороны, всё же, тот же опыт показал, что слишком сильно обращать на это (выбор знака разделителя) внимание точно не стоит и если вы до прочтения этих слов выбрали и поставили себе другой - не стоит переколбашивать всю структуру из-за каких-то древних рекомендаций. Дело в том, что все современные движки поисковиков достаточно хорошо разбирают морфологию, потому всё из того же многолетнего опыта могу утверждать, что на деле ссылки /no_index и /no-index будут одинаково "хорошо" смотреться "в глазах поисковика". Равно, кстати, как и без разделителя (noindex). Так что, повторюсь, ни в коем разе не придавайте слишком весомого значения данному пункту и если "для красоты" или просто "по приколу" хочется использовать подчёркивание, тильду, собаку, два минуса, иероглиф итп - смело делайте. С другой стороны, если же вас заботит будущее продвижение сайта - лучше придерживаться рекомендаций и использовать именно минус. Особенно порекомендую это для сайтов с "технической" направленностью, где алгоритмы разбора морфологии не всегда работают.
  • Регистр символов:

  • Это тоже важный пунктик. Тоже - и для человека, и для поисковиков. Связь следующая - регистр (ключевого) слова влияет на его релевантность (т.е. к примеру, поиск по noindex, Noindex и NOINDEX - может давать разные результаты), есть связь между наличием в урле (ключевого) слова и выдачей, потому и перевод в нижний регистр с точки зрения продвижения - выгоден (т.к. ищут-то обычно вводя запрос в сплошном нижнем регистре). Однако очередное НО. Не надо пытаться всё "заточить" под машину, не стоит забывать про человека. Тем более, что связь, опять же - не настолько серьёзная, чтобы считать данную опцию принципиальной. Потому, если сайт планируется/делается/сделан "для людей" - серьёзно рассмотрите возможность использования галки "Оставить регистр таким, какой он есть", т.к. некоторые моменты (например и "как минимум" - ники пользователей) - смотрятся в "оригинальном регистре" - много более приятней. То же самое отдельно касается сайтов с технической направленностью, где регистр может играть принципиальное значение.
    С другой стороны, конечно же, не нужно отрицать очевидного - при возможности использовать "всё в нижнем регистре" - это заведомо выгодней плюс снимает некоторые потенциальные проблемы хостинга, когда две картинки с именами Noindex.jpg и noindex.jpg - есть два физически разных файла на винчестере (хостера).


  • Максимальная длина создаваемого синонима. 100 рекомендуется. См. справку по Pathauto для уточнения.
  •  Не самый, но тоже достойный внимания пункт. Как понятно из названия - ограничивает длину синонима, чтобы не получать в адресной строки перлы (как бывает на некоторых сайтах) типа:

    /ya-iz-lesu-vyshel-byl-dilnyj-moroz-glyazhu-podnimaetsya-medlenno-v-goru-loshadka-vezushchaya-hvorostu-voz

    Вряд ли такая ссылка по-прежнему претендует на звание ЧПУ. Поэтому, чтобы так не борщить, моя рекомендация - использовать длину ссылок 30-80 символов (рекомендуемые сто - определённо "заслишком"). Например, я часто в дань моды - ставлю 64 бита символа. А когда тематика сайта позволяет понизить планку (обычно это - понизить - сложней в случае "технической" направленности и/или когда предполагается много страниц одной категории с аналогичным началом названия, т.к. в случае одинаковости названия в выбранном дипазоне pathauto будет просто добавлять очередной порядковый номер к такому синониму) - и 32-48. Т.е. цель следующая - выбрать минимальное значение, но без ущерба ЧПУ-шности...


  • Максимальная длина текста любого компонента синонима (например [title]). Рекомендуемое значение: 100. См. справку Автосинонима для уточнения.
  • Дополняет настройку предыдущего пункта - если (когда) в синоним входит несколько переменных (например, название материала + имя пользователя), то чтобы в случае слишком большой длины одной из них "хватило места" в синониме и другой - ограничивается длина каждой компоненты. Т.е., к примеру, в выше приведённом случае с морозной лошадкой - пользователю в таком синониме при значении в данном поле равном предыдущему - места б не осталось и задумка отобразить в урле автора (имя пользователя) не прошла бы для данного материала с таким длиннющим тайтлом. Потому, при наличии стойкого желания (всегда) "иметь место" для всех частей, из которых генерится синоним - ограничивайте данным значением. В случае того, если такие сложные пертурбации вам абсолютно не понятны - не заморачивайтесь и тупо оставляйте как есть, по максимум, равному предыдущему значению.


    Maximum number of objects of a given type which should be aliased during a bulk update. The default is 50 and the recommended number depends on the speed of your server. If bulk updates "time out" or result in a "white screen" then reduce the number.

    Число - сколько за раз будет обрабатыавться синонимов при пакетном (bulk) режиме. Важный параметр в случае большого количества синонимов могут возникать серьёзные проблемы, т.к. на на их создание требуется время, которое для немощного хостинга может вылиться в минуты отработки скрипта, а для безопасности работы подобные "долгоиграющие" скрипты прибиваются хостером, чтобы не грузить сервер. Потому не надо вбивать в него 999999, ограничтесь 200-500 для начала и уже если очень много синонимов - экспериментируйте с единицами тысяч. Десятки тысяч - не потянет даже собственный сервер.

     


    Что следует сделать Автосинониму при обновлении существующего элемента содержимого, который уже имеет синоним?

     Если поднапрячься, то понять логику (и важность) данного пункта - несложно. Рекомендую всегда использовать последний вариант, не оставляя старый синоним. Это и чтобы самому не запутаться и чтобы избежать дублирования контента - когда у одной страницы - несколько адресов (синонимов), что КРАЙНЕ важно для того, чтобы избежать штрафных санкций со стороны поисковых систем (они могут расценить наличие "полных дублей" - как попытку "набить" количество страниц на сайте).

    Когда шаблон включает в себя некоторые символы (например, с умла́утом), должны Pathauto попытаться транслитерировать страницу в ASCII-96 алфавит? Транслитерация определяется i18n-ascii.txt файлом в Pathauto папке.Эта опция отключена на Вашем сайте, поскольку у вас нет i18n-ascii.txt файла в папке Pathauto.

    Ну, вот, добрались до самых важных. Как видно, из текста пункта, 'он нужен для того, чтобы использовать не кириллические ссылки, которые получаются "по умолчанию" (в последних версиях пасавты). Т.е. сейчас на сайте ссылки типа:
    http://noindex.by/content/нафига-собственно.

    В то время как в (некоторых) броузерах, "в глазах" роботов поисковиков и всевозможных отчётах, связанными с URL выглядят как
    http://noindex.by/content/%D0%BD%D0%B0%D1%84%D0%B8%D0%B3%D0%B0-%D1%81%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE

    Что совершенно не читабельно (а ведь цель ЧПУ - сделать "дружественными" ссылки).

    Я был одним из "первопроходцев" использования кириллических ссылок на сайте, прикрутив оные ещё в шестом году на пятый друпал. Потому со всей ответственностью заявляю: если есть возможность их не использовать - не используйте. Лучше уж просто вообще откажитесь от синонимов. Это будет много полезней. Причина - до сих пор проблемы с поддержкой кириллицы в URL. И если большинство поисковиков их корректно понимают (страницы передают/имеют/получают тИЦ и PR и т.п.), однако любые формы отчётов с ними - реальный геморрой. Забудьте. Используйте лишь, если "клиент так хочет". Самому же себе - категорически не советую.

    Итак, чтобы включить транслитерацию, ищем в папке модуля файлик i18n-ascii-example.txt, редактируем его "кириллическую часть", переименовываем в i18n-ascii.txt и закидываем на сервер. Структура сайта, думаю, совершенно понятна - по коду переводится буква в транслит. Я обычно (здесь на сайте, например) использую следующую транслит-кириллицу:

    А = "A"
    Б = "B"
    В = "V"
    Г = "G"
    Д = "D"
    Е = "E"
    Ё = "E"
    Ж = "ZH"
    З = "Z"
    И = "I"
    Й = "J"
    К = "K"
    Л = "L"
    М = "M"
    Н = "N"
    О = "O"
    П = "P"
    Р = "R"
    С = "S"
    Т = "T"
    У = "U"
    Ф = "F"
    Х = "H"
    Ц = "C"
    Ч = "CH"
    Ш = "SH"
    Щ = "SHCH"
    Ы = "Y"
    Э = "E"
    Ю = "YU"
    Я = "YA"
    а = "a"
    б = "b"
    в = "v"
    г = "g"
    д = "d"
    е = "e"
    ё = "e"
    ж = "zh"
    з = "z"
    и = "i"
    й = "j"
    к = "k"
    л = "l"
    м = "m"
    н = "n"
    о = "o"
    п = "p"
    р = "r"
    с = "s"
    т = "t"
    у = "u"
    ф = "f"
    х = "h"
    ц = "c"
    ч = "ch"
    ш = "sh"
    щ = "shch"
    ы = "y"
    э = "e"
    ю = "yu"
    я = "ya"
    Ъ = ""
    ъ = ""
    Ь = ""
    ь = ""

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

    Итак, файл закинут, галочка поставлена. Едем дальше.

    Оставлять в создаваемых синонимах только буквы и цифры, входящие в набор ASCII-96.

    Странное применение - совсем уж не ЧПУ получаются с этим пунктом, игнорируем, галку не ставим.

    Слова, разделители для синонима URL, отделенные запятыми. Не помещайте сюда знаки пунктуации и не используйте режим WYSIWYG для этого поля.

     Не забудьте очистить содержимое этого поля! Написанное по умолчанию - из расчёта на английский язык, а у нас "как бы русский". Вырезание при таком раскладе "a" (а), "by" (бы), "to" (то) - сильно поганит внешний вид ссылок. А это, напомню ж - ЧПУ. Режем все!

     

    На выходе будет что-то типа:

    • Конфигурация сохранена
    • Массовое формирование материалов завершено, 25 синонимов создано.
    • Массовое формирование терминов завершено, 3 синонима создано.
    • Массовое формирование страниц истории пользователей завершено, 2 синонима создано.
    • Массовое формирование пользователей завершено, 2 синонима создано.

     п.с. Продолжение окончания - следует...

     

    Если вам помогла или просто понравилась статья - плюсаните/поделитесь, пожалуйста.

    Комментарии

    Не знаю, когда допишу и допишу ли. Потому кратко добью, ибо это ВАЖНО.

    Настройки пунктуации

    Все, кроме нижнего подчёркивания - устанавливаем на "Заменить разделителем". Это выгодней, нежели "Удалить" с эстетической точки зрения, т.к. не сливаются слова в случае их разделения скобками и т.п.

    ВНИМАНИЕ! Если поставить "Нет действия (не заменять)" на некоторые спецсимволы, в первую очередь это $, %, & и некоторые другие, то в результате можете получить проблемы вплоть до сбоя в работе сайта! Дело в том, что оставленный в строке урла такой символ запросто может в (не)удачной последовательности с другими родить "экзотический" запрос, способный уронить сайт в "Error 500" - проверено на себе, прямо на этом сайте, потому и пишу, чтобы больше не забыть. :)

    Итого: все "пунктуации" забиваем минусами, кроме "_". Несколько минусов после обрежутся до одного, а последний (в конце урла) - удалится. Всё будет красиво.

    Остальные настройки - в принципе понятны. Там - на своё усмотрение. Главные и проблемные - рассмотрены. Всё, закрыть и забыть. Это тоже важно: в будущем что-то менять - даже не планируйте. Потому всё трижды предусмотреть и после, морщиться, жаловаться на себя же, но не менять. Вот я сейчас, доделал, и больше не буду менять, железно. :)

    Всё сделал по инструкции и не работает. :(

    Не работает что конкретно? В случае поддержки "чистых ссылок" pathauto работает по-любому, далее уже могут быть лишь разные настройки. В общем, в случае проблем нужна конкретика.

    Сделал всё как написано, когда создаю, вообще урл не меняет, просто создает страницу node/1 и всё, настройки все такие как у вас.

    Начало работать, но все урл делает вида:
    content/rsrsssrer-rrssrrr

    Установил друпал. Подключил модули. Не работает как было ?q=node/3 так и осталось.

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

    Подписка на Комментарии к "Pathauto" Подписка на NOINDEX.by - Все комментарии