2.4.1.1.2. Корневой каталог сайта

flowchart LR account(📁 ~) site(📁 example.com) www(📁 www) sub(📁 sub) account---site---www & sub www-files("📄 Файлы example.com") sub-files("📄 Файлы sub.example.com") www-.-www-files sub-.-sub-files

В корневом каталоге хостинг-аккаунта размещаются каталоги с названиями основных доменов, внутри каждого из которых находятся каталог основного домена и каталоги его поддоменов. На диаграмме: ~ — корневой каталог хостинг-аккаунта, example.com — каталог с названием основного домена, www — каталог с файлами основного домена, sub — каталог с файлами поддомена sub.

Каталогом основного домена всегда является www (путь к нему выглядит как ~/example.com/www). Хоть каталог и имеет такое название, работа основного домена с www или без www с ним никак не связана и настраивается другими способами: через панель управления (см. Настройка редиректа на адрес с www или без www), .htaccess или админ-панель используемой на сайте CMS.

Названия каталогов поддоменов соответствуют названиям поддоменов без основного домена (например, для поддомена sub.example.com каталог будет называться sub, а путь к нему будет выглядеть как ~/example.com/sub).

Важные моменты:

  • Указываемый каталог должен быть в пределах стандартного корневого каталога сайта. Допускается указание вложенных каталогов.
  • Для направления нескольких доменов на один сайт используйте псевдонимы.
  1. Откройте раздел «Настройки сайта».
  2. В поле «Корневой каталог» укажите название подкаталога и сохраните изменения:
  3. Подождите несколько минут, пока изменения вступят в силу.

Внимание!

Использование альтернативных способов может приводить к некорректной работе сайта. По возможности старайтесь изменять каталог через панель управления.

Если нужно разместить сайт не в корневом каталоге www, а, например, в каталоге www/dir, создайте файл index.php с таким содержимым:

<?php
require_once("dir/index.php");

Вместо dir/index.php укажите путь к индексному файлу вашего сайта.

Созданный файл разместите в корневом каталоге сайта и установите права для него равными 750.

Также обязательно установите значение параметра open_basedir на уровень выше для доступа к другим каталогам сайта.

В некоторых фреймворках основной каталог сайта с индексным файлом обязательно должен размещаться не в корневом каталоге сайта, а в подкаталоге public или web (или другом).

Для решения такой задачи можно в корневом каталоге сайта создать файл .htaccess с таким содержимым:

DirectoryIndex /public/index.php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.+) $1 [L]
RewriteCond %{DOCUMENT_ROOT}/public%{REQUEST_URI} -f
RewriteRule ^(.+) /public/$1 [L]

Другой вариант:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/web/.*$
RewriteRule ^(.*)$ /web/$1 [QSA,L]

Ещё один вариант:

RewriteEngine On
RewriteCond %{REQUEST_URI} !public/
RewriteRule (.*) /public/$1 [L]

Ошибки на сайте, которые могут быть связаны с корневым каталогом:

  • 403 — проверьте в корневом каталоге сайта наличие индексного файла и в целом правильность размещения файлов сайта.
  • 404 — убедитесь, что путь из поля «Корневой каталог» реально существует.
Содержание

    (4)