Чистые ссылки в Drupal 7 – общие сведения, неполадки и их устранение

Нередко разработчики или владельцы сайтов на Drupal сталкиваются с такой особенностью этой CMS, как «чистые» ссылки. Дело в том, что архитектура Drupal (до 7-й версии включительно) устроена таким образом, что ссылки на страницы генерируются только в машинопонятном виде. Это неудобно для ручной навигации по адресам, а также вызывает ряд других проблем. В данной статье будет рассказано, каким образом включать «чистые» ссылки в Drupal 7. А также рассмотрены некоторые распространённые неполадки, связанные с работой «чистых» ссылок и методы их устранения.

Что такое «чистые» ссылки и для чего они нужны?

«Чистая» красивая и понятная ссылка выглядит, например, так:

https://drupal-site/user

Обычная ссылка, генерируемая Drupal 7 куда менее привлекательна и наглядна:

https://drupal-site/?q=user

Обычному пользователю последний вариант практически ни о чём не говорит. А вот программист или хакер сразу поймёт, каким образом и какие параметры нужно передавать через базовый адрес drupal-site. Чтобы достичь (или даже попытаться взломать) какую-либо страницу сайта. Таким образом чистые ссылки играют не последнюю роль в безопасности сайта. Да и вообще любого веб-приложения.

Поисковые системы, когда встречают ссылку, которая не очищена от технического «мусора» обычно её пропускают и не индексируют. Какой бы интересный контент по этой ссылке ни находился. Отсюда вывод: «чистые» ссылки играют важную роль для SEO – поисковой оптимизации контента веб-приложения, т. е. сайта. Быстро и качественно продвинуть для поисковиков такой сайт точно не получится, если получится вообще.

Поэтому для сайтов, созданных на CMS Drupal версии 7 и более ранних необходимо следить за тем, чтобы «чистые» ссылки (ЧС) были во-первых: включены в панели администрирования, а во-вторых поддерживались конфигурацией веб-окружения, на котором работает сайт.

Как включить «чистые» ссылки в Drupal 7?

Перейдя в раздел «Конфигурация». А затем выбрав в категории «Поиск и метаданные» пункт «Чистые ссылки», ЧС могут быть включены:

Следует ещё раз обратить внимание на конкретном примере, насколько удобочитаемым выглядит адрес в режиме работы ЧС:

Обычно, опция включения «чистых» ссылок активна. Если Drupal не «сомневается» в задействовании такой возможности. Если же по каким-то причинам Drupal не может определить, возможно ли использование ЧС. Он предложит провести тест проверки вручную. Это сделано для того, чтобы лучше контролировать процесс устранения неполадок с работой ЧС. Например:

Неполадки с «чистыми» ссылками и их устранение

С работой ЧС часто возникают две основные проблемы:

  • отсутствует или отключен модуль для перестроения URL-адресов, в частности, преобразующий их в «чистые» ссылки, такой как mod_rewrite для Apache;
  • использование HTTPS-протокола для базового URL веб-приложения, что как таковой проблемой не является. Однако в этом случае Drupal не может корректно выполнить тест работы ЧС и активировать соответствующую опцию.

В первом случае необходимо проверить, установлен и включен ли модуль rewrite Apache:

$ apachectl -M | grep rewrite

rewrite_module (shared)

Данный вывод говорит о том, что нужный модуль включен, в противном случае вывод будет пустым. Это также можно проверить вручную, просмотрев содержимое каталога /etc/ apache2/mods-enabled:

$ ls /etc/apache2/mods-enabled | grep rewrite

rewrite.load

В случае, если вывод будет пустым, нужно установить модуль rewrite для Apache. Если в системе доступны служебные утилиты Apache, среди которых a2enmod, то включить требуемый модуль можно очень быстро командой:

$ sudo a2enmod rewrite

Со вторым случаем, когда не удаётся задействовать ЧС, часто сталкиваются, когда переводят сайт на использование защищённого протокола HTTPS. В такой ситуации используют редирект с обычной версии сайта на HTTPS. Например такой (зависит от настроек веб-окружения):

RewriteCond %{HTTPS} off

RewriteRule (.*) https://{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Подобные записи делаются в файле .htaccess Drupal и именно это мешает выполнению теста ЧС. В данном случае нужно просто задействовать их принудительно, добавив в файл drupal-site/sites/default/settings.php строку:

$conf[‘clean_url’] = 1;

Также необходимо определить новый базовый адрес сайта, основанный на HTTPS:

$base_url = ‘https://drupal-site’;

Стоит обратить внимание, что каталог default и сам файл settings.php защищены от записи. Перед внесением изменений необходимо настроить соответствующие режимы доступа.

Дополнительной мерой для обеспечения работы ЧС в Drupal является задание директивы Apache AllowOverride All для корневого каталога виртуальных хостов, например:

AllowOverride All

Также желательно, чтобы в файле .htacces или в конфигурационном файле виртуального хоста сайта на Drupal присутствовали следующие инструкции:

RewriteEngine on

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_URI} !=/favicon.ico

RewriteRule ^ index.php [L]

Заключение

В заключение нужно отметить, что рассмотренные проблемы с ЧС — самые распространённые. Которые могут возникнуть на любом используемом хостинге. А рассмотренные методы их устранения рекомендованы самими разработчиками Drupal

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.



2019-04-22T15:14:51
Drupal