Раздел помощи SpaceWeb

Как сменить название публичной директории сайта (public_html)?

08 авг, 2023

На тарифах виртуального и мощного хостинга публичная директория сайта, в которой размещается индексный файл PHP (index.php), должна иметь имя public_html. Другие названия не поддерживаются конфигурацией веб-сервера, по этой причине, если использовать другое название, например, public или web, при переходе на сайт будет возникать ошибка 404 (Объект не найден). 

Некоторые CMS и фреймворки (например, Laravel, Yii и др.) могут не предусматривать возможность смены имени публичной директории на public_html. В этом случае для корректной работы сайта можно создать символическую ссылку (симлинк) с названием public_html на необходимую публичную директорию. В этом случае для веб-сервера ссылка будет видна как полноценная директория с необходимым названием. Создание симлинков доступно через SSH-подключение.

Общая инструкция

Для создания символической ссылки необходимо:

  1. Подключитесь к аккаунту по SSH, используя основной логин и пароль аккаунта. Подробнее о работе по SSH.
  2. Перейдите в директорию сайта на уровень выше текущей публичной директории CMS/фреймворка командой cd.

Например, если сайт направлен в директорию ~/mysite.ru/public_html/, необходимо перейти в директорию ~/mysite.ru/ через консоль:

cd ~/mysite.ru/
  1. Введите следующую команду (перед выполнением команды, директорию public_html надо удалить):
ln -s <название_папки> public_html

где вместо <название_папки> необходимо подставить название текущей публичной директории.

Пример настройки для Laravel

По умолчанию проект на базе фреймворка Laravel имеет следующую файловую структуру:

Файлы Laravel

Публичная директория имеет название public. Для настройки корректного доступа к сайту необходимо:

  1. Разместите указанные выше файлы и папки в директории выше папки public_html, в которую направлен сайт. Сделать это можно в настройках сайта в панели управления аккаунтом.

Например, сайт направлен на папку laraveltest/public_html, в этом случае разместить файлы необходимо в папке laraveltest.

  1. Подключитесь к аккаунту по SSH и перейдите в папку laraveltest:
cd laraveltest
  1. Выполните команду на создание символической ссылки:
ln -s public public_html

После данной настройки в браузере по домену сайта должна открыться страница фреймворка по умолчанию:

Страница Laravel по умолчанию