Урок - Настройка путей для блога.

Главная » Курсы » Курс Drupal 7, Управление » Урок - Настройка путей для блога.

Обучающий онлайн курс
Drupal 7, Управление

Лицензия: Копирование запрещено.

На данный момент у нас есть одна запись в блоге, которая доступна для просмотра с главной стараницы.
Обратите внимание, что URN (dнутренний путь) первой записи "node/1". В этом уроке мы уделим внимание настройкам связанным с внутренней адресацией.

Несколько мнений зачем это нужно:

  • Для SEO (поисковая оптимизация). На форумах о поисковой оптимизации (SEO) встречаются мнения о том, что путь в котором есть ключевые слова имеет больше плюсов при ранжировании поисковой системы. Я не занимаюсь продвижением сайтов, но эту информацию учитываю.
  • ЧПУ (человеко понятные урлы). Намного приятнее и запоминаются пути вида example.com/about, чем example.com/node/123.
  • Сохранение оригинальных путей. Это самая важная задача, которая встречается при переносе сайта с другой системы на Drupal 7. Если клиент предоставляет сайт, который просуществовал хотя бы несколько месяцев, то поисковые машины уже имеют информацию о путях сайта и содержимом. В таком случае критически важно разместить информацию по старым путям или использовать статус HTTP-протокола "301 Moved Permanently" (Перемещено окончательно).

Нам понадобятся следующие модули:

  • Модуль Path.
    Модуль Path автоматически устанавливается в профайле Standart. Проверьте, что бы модуль быть включен на странице "Modules".
    Модуль Path используется для указания синонимов путей. Например для нашей страницы "node/1" можно указать отображение по пути "first-record.html".
  • Модуль Token.
    Модуль Token необходимо установить в ручную.
    Модуль Token позволяет использовать так называемые маркеры(токены), которые будут заменены на соответсвующие данные. Например для нашей первой записи токен "Номер записи [nid]." будет на выходе "Номер записи 1." Мы не будем угулублятся в модуль Token, так как он в нашей текущей задаче необходим для работы модулю Pathauto.
  • Модуль Pathauto.
    Модуль Pathauto необходимо установить в ручную.
    Модуль Pathauto позволяет создавать синонимы путей автоматически, по указанным шаблонам. Как раз в шаблонах нам и понадобится использование токенов.
  • Модуль Transliteration.
    Модуль Ttransliteration необходимо установить в ручную.
    Модуль Ttransliteration позволяет использовать в путях кирилические символы.
  • Модуль Global Redirect.
    Модуль Global Redirect необходимо установить в ручную.
    Модуль Global Redirect устанавливат статус "301 Moved Permanently" (Перемещено окончательно) для системных путей, перенаправляя на синоним.   

Приступим.

Модуль Path

Зайдите на страницу "URL aliases" (Administration » Configuration » Search and metadata):



Жмем "Add alias"(Добавить синоним). Для поля "Existing system path" вводим "node/1", для поля "Path Alias" вводим "first-record.html".

 

Сохраняем - получаем одну запись в списке синонимов.



Переходим на главную страницу. Наведите курсор на надпись "Read more" и обратите внимание, что URN изменился с "node/1" на "first-record.html". Т.е. наша первая запись в блоге доступна теперь и по URI http://example.com/node/1, и по http://example.com/first-record.html



Модуль Global Redirect

Модуль Global Redirect устанавливает статус "301 Moved Permanently" (Перемещено окончательно) для системных путей, перенаправляя на синоним.

После установки модуля Global Redirect, при попытке зайти на страницу http://example.com/node/1 браузер получив код ответа "301 Moved Permanently" перенаправит нас на страницу http://example.com/first-record.html.


Модуль Pathauto

После установки модуля Pathauto доступна страница "Patterns"(Administration » Configuration » Search and metadata » URL aliases).


Для поля "Pattern for all Blog entry paths" введите шаблон:

blogs/[node:created:custom:Y]/[node:created:custom:m]/[node:title]

где
вместо [node:created:custom:Y] будет подставлен год создания записи в блоге
вместо [node:created:custom:m] будет подставлен месяц создания записи в блоге
вместо [node:title] будет подставлен заголовок записи в блоге

части шаблона в квадратных скобках и есть маркеры (токены):




Теперь добавляем новую запись в блог.
Заголовок "Моя вторая запись в блоге!! -(о_О)-"
Текст:

Звонит бабуля в службу спасения:
- Алло, у меня кошечка застряла на дереве. Вы бы не могли ее снять?
- Да ничего, посидит-посидит и сама слезeт.
- А если нет? Так она там с голоду помрет.
- Бабуля, а вы когда-нибудь на дереве видели скелет кошки?


- Простите, я задавил вашу кошку. Готов заплатить, или заменить.
- Хмм... Заменить, говорите? А мышей ловить умеете?

Hовинка японских pоботостpоителей! Hовая модель кибеpкота пpактически неотличима от живого, но зато пpосит есть на пятнадцати языках, деpет обои и мебель под музыкальное сопpовождение и гадит стpого в местах, запpогpаммиpованных хозяином.

Сохраняем.
Обратите внимание на URN нашей записи:

blogs/2011/11/моя-вторая-запись-в-блоге-оо

Приходим к выводу, что Drupal обрезает у смайликов уши. =)

Как видите сработал шаблон "blogs/[node:created:custom:Y]/[node:created:custom:m]/[node:title]":

  • вместо [node:created:custom:Y] подставлен год 2011
  • вместо [node:created:custom:m] подставлен месяц 11
  • вместо [node:title] подставлено название записи



Модуль Transliteration

Еще один спорный момент: Наличие кирилических символов в путях. Кто-то считает в плюс, кто-то считает в минус. Мы же будем говорить как на это настраивать. Нам понадобится модуль Transliteration.

После установки модуля Transliteration переходим на страницу "Settings" (Administration » Configuration » Search and metadata » URL aliases) и помечаем флажок "Transliterate prior to creating alias".



Далее идем редактировать заголовок для последней записи и меняем на его на "Моя вторая запись в блоге!! -(о_О)- 3". Сохраняем. В результате путь к записи изменится с

blogs/2011/11/моя-вторая-запись-в-блоге-оо

на

blogs/2011/11/moya-vtoraya-zapis-v-bloge-oo-3

 

Запрет автоматического изменения путей.

На данный момент при редактировании заголовка наших записей будет меняться и путь к материалу.
Если заменить заголовок для последней записи на "Моя вторая запись в блоге!! -(о_О)- 4", то путь изменится на "blogs/2011/11/moya-vtoraya-zapis-v-bloge-oo-4". Данная ситуация не есть хорошо, так как ссылки на материал будут менятся и ссылки с внешних ресурсов и поисковых систем будут вести на не существующие страницы.

Обратите внимание на флажок "Generate automatic URL alias", на странице редактирования записи в блоге. Если флажок "Generate automatic URL alias" помечен, то урл будет изменяться в соответсвии с настройками на странице "URL aliases". При некоторых настройках Url aliases флажок "Generate automatic URL alias" может отключаться автоматически.


Переходим на страницу "Settings" (Administration » Configuration » Search and metadata » URL aliases) и меняем настройку "Update action" на "Do nothing. Leave the old alias intact."

Идем редактировать заголовок для последней записи и меняем на его на "Моя вторая запись в блоге!! -(о_О)- 5". В результате имеем старый путь страницы "blogs/2011/11/moya-vtoraya-zapis-v-bloge-oo-4".

И обратите внимание на флажок "Generate automatic URL alias" - теперь он отключен.

Избавляемся от WWW

Еще один момент при работе с сайтом - это наличие двойных путей вида http://www.example.com и http://example.com. Некоторые поисковые системы, счетчики позволяют указать "зеркала" сайта или суммировать подсчет посещений сайтов с "www." и без. Исторически сложившаяся ситуация требует решения. Решение уже заложено в Drupal 7.

Если необходимо, чтобы  сайт был доступен только по адресу с "www." (например: www.example.com), то в корневом файле ./.htaccess следует найти строки:

  # RewriteCond %{HTTP_HOST} !^www\. [NC]
  # RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

и раскомментировать их:

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]


Если же необходимо, чтобы  сайт был доступен только по адресу без "www." (например: example.com), то в корневом файле ./.htaccess следует найти строки

  # RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
  # RewriteRule ^ http://%1%{REQUEST_URI} [L,R=301]

и раскомментировать их:

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [L,R=301]

 

На этом мы закончим разговор о настройках внутренних путей Drupal 7.