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