Настройка drupal-project на хостинге Beget

16.09.2018
Хостинг Beget

Если вы используете новый шаблон установки drupal/recommended-project, то проблема решается изменением названия папки корневой директории в composer.json

Новый спосок смены названия корневой директории

Данная пошаговая инструкция решает 2 проблемы:

  1. Показывает как настроить хостинг на работу с Composer drupal-project.
  2. Исправляет ошибку "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

Настройка 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');
}
На нашем сайте filinkov.ru мы используем cookie. Примите нашу Политику использования cookie.
Принимаю