Настройка drupal-project на хостинге Beget
Если вы используете новый шаблон установки drupal/recommended-project, то проблема решается изменением названия папки корневой директории в composer.json
Данная пошаговая инструкция решает 2 проблемы:
- Показывает как настроить хостинг на работу с Composer drupal-project.
- Исправляет ошибку "Redirects to external URLs are not allowed by default, use \Drupal\Core\Routing\TrustedRedirectResponse for it."
Рассмотрим пошаговую установку Drupal 8 на хостинге Beget с использованием Composer. Будем считать, что ваш домен называется site.ru
Вариант решения проблемы № 1
Создание символьной ссылки
Удаляем папку:
/home/s/ваш_логин/site.ru/public_html
Выполните в терминале следующую команду:
ln -sf /home/s/ваш_логин/site.ru/web /home/s/ваш_логин/site.ru/public_html
Путь до корня сайта у каждого свой, зависит от сервера:
/home/s/ваш_логин/site.ru
Вариант решения проблемы № 2
Корневая директория сервера по умолчанию
По умолчанию все сайты на виртуальном хостинге располагаются в папке:
/site.ru/public_html
При установке через Composer вы должны выполнить команду:
composer create-project drupal-composer/drupal-project:8.x-dev public_html --stability dev --no-interaction
Перед выполнением команды, папка public_html должна отсутствовать, или укажите любое другое название папки по желанию. Потом просто переместите из нее файлы в папку public_html.
У проекта drupal-project корневая директория сайта — это папка web:
/site.ru/public_html/web
После выполнения загрузки ваша структура папок будет следующей:
Настройка drupal-project на хостинге Beget
1. Создаем в исходной корневой папке public_html файл .htaccess
/site.ru/public_html/.htaccess
2. Открываем на редактирование файл .htaccess и вставляем в него
Для HTTP
RewriteEngine on RewriteBase / RewriteCond %{HTTP_HOST} ^(www\.)?site\.ru$ [NC] RewriteCond %{REQUEST_URI} !^/web/ RewriteRule ^(.*)$ web/$1 [L]
Для HTTPS
RewriteEngine on RewriteBase / RewriteCond %{ENV:HTTPS} !on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteCond %{HTTP_HOST} ^(www\.)?site\.ru$ [NC] RewriteCond %{REQUEST_URI} !^/web/ RewriteRule ^(.*)$ web/$1 [L]
Замените site и ru на свои название домена и зоны.
3. Переходим в папку web и находим файл .htaccess
/site.ru/public_html/web/.htaccess
Открываем на редактирование файл .htaccess.:
Раскомментировать строку RewriteBase /drupal и заменить на RewriteBase /web
5. Переходим в папку web/sites/default и находим файл settings.php
/site.ru/public_html/web/sites/default/settings.php
Открываем на редактирование файл settings.php
6. В самом конце файла settings.php дописываем следующий код
if (isset($GLOBALS['request']) and '/web/index.php' === $GLOBALS['request']->server->get('SCRIPT_NAME')) { $GLOBALS['request']->server->set('SCRIPT_NAME', '/index.php'); }