Часто при установке сайта, не всегда возможно сделать его правильную загрузку из нужной папки стандартными средствами виртуального хостинга в cPanel. В моей практике такое было несколько раз, когда хостинг не мог или не хотел помочь. В моем случае мне надо было сделать загрузку из папки web (у вас может быть своя папка, если вы меняли стандартные настройки). Этот вопрос возникает если ваш домен главный сайт на аккаунте.
Также после SEO анализа установленного сайта Drupal 8, заметил, что он доступен не только по https, но и по http. Ниже приведу порядок действий, которые помогли мне решить проблему с переадресациями, чтобы сайт приобрел вид https://sitename.com.
Первым делом сделаем загрузку сайта из папки web. В директории сайта (в корне, не в папке web) создаем файл .htaccess и добавляем в него код:
RewriteEngine on
# Change "sitename.com" to your own domain name:
RewriteCond %{HTTP_HOST} ^(www.)?sitename.com$
# Change "directory" to the directory where Site is installed:
RewriteCond %{REQUEST_URI} !^/web/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Change "directory" to the directory where Site is installed:
RewriteRule ^(.*)$ /web/$1
# Change "sitename.com" to your own domain name:
RewriteCond %{HTTP_HOST} ^(www.)?sitename.com$
# Change "directory" to the directory where Site is installed:
RewriteRule ^(/)?$ web/index.php [L]
Далее в конце вашего файла settings.php добавляем следующий код:
/* Fix redirect issue to subdir (/web) on drupal */
if (isset($GLOBALS['request']) and
'/web/index.php' === $GLOBALS['request']->server->get('SCRIPT_NAME')) {
$GLOBALS['request']->server->set('SCRIPT_NAME', '/index.php');
}
Загрузку мы настроили, переходим к настройке https. Для этого откроем файл .htaccess в папке web. Находим запись RewriteEngine on и сразу после нее добавляем код:
# Force redirect HTTPS.
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
После этого находим ниже в данном файле .htaccess
закомментированный фрагмент
# To redirect all users to access the site WITHOUT the 'www.'
и после него вставляем следующий код:
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]
На этом настройка закончена. Проверяете все ли варианты написания сайта ведут на правильный.
В одном из вариантов, вместо корня сайта, был переход на https://sitename.com/web. Этот вопрос можно решить переадресацией с помощью модуля Redirect, который обычно я устанавливаю на всех сайтах. Мы делаем переадресацию со страницы https://sitename.com/web на главную страницу <front>.