Кореневий каталог веб-сайту: Повний посібник з розташування, структури та найкращих практик
Розуміння кореневого каталогу вашого сайту є одним із найфундаментальніших навичок, якими повинен оволодіти будь-який веб-розробник, системний адміністратор або власник сайту. Незалежно від того, чи усуваєте ви несправності зламаної сторінки, розгортаєте новий застосунок або захищаєте сервер від атак, все зводиться до цієї єдиної, критично важливої папки. У цьому вичерпному посібнику ми детально розглянемо, що таке кореневий каталог, де його знайти в різних середовищах, як його захистити та які професійні найкращі практики забезпечують ефективну роботу сайтів у масштабі.
Що таке кореневий каталог сайту?
Кореневий каталог — це папка верхнього рівня на веб-сервері, з якої обслуговуються всі файли та підкаталоги сайту. Думайте про нього як про «домашню базу» вашого сайту — коли відвідувач вводить ваше доменне ім’я (наприклад, www.example.com) у браузер, веб-сервер одразу шукає у кореневому каталозі відповідний файл для повернення, зазвичай index.html або index.php.
Тут або в підкаталогах нижче зберігається все необхідне для роботи сайту: HTML-розмітка, CSS-таблиці стилів, файли JavaScript, зображення, відеоматеріали, PHP-скрипти та динамічно згенерований контент. Без правильно налаштованого кореневого каталогу веб-сервер не має відправної точки і не може обслуговувати жодний контент для користувачів.
Важливо розрізняти веб-кореневий каталог (папку, доступну через HTTP/HTTPS) та кореневий каталог файлової системи сервера (каталог / у системах Linux). Це абсолютно різні поняття. Веб-корінь є підкаталогом у файловій системі сервера, навмисно обмеженим для контролю того, що доступне публічно.
Поширені назви кореневого каталогу
Точна назва та шлях кореневого каталогу залежать від вашого хостингового середовища, операційної системи та програмного забезпечення веб-сервера. Ось найбільш поширені конфігурації:
| Середовище | Шлях до кореневого каталогу за замовчуванням |
|---|---|
| cPanel / Спільний хостинг | /home/username/public_html/ |
| Plesk | /var/www/vhosts/domain.com/httpdocs/ |
| Apache на Ubuntu/Debian | /var/www/html/ |
| Apache на CentOS/RHEL | /var/www/html/ |
| Nginx (за замовчуванням) | /usr/share/nginx/html/ або /var/www/html/ |
| XAMPP (Windows/macOS) | C:xampphtdocs або /Applications/XAMPP/htdocs/ |
| MAMP (macOS) | /Applications/MAMP/htdocs/ |
| Користувацька конфігурація VPS | Визначається у файлі конфігурації віртуального хоста |
У середовищі VPS Хостингу шлях до кореневого каталогу повністю налаштовується. Ви визначаєте його самостійно всередині блоку Apache VirtualHost або блоку Nginx server, що дає вам повний контроль над файловою структурою сервера.
Призначення кореневого каталогу
Кореневий каталог виконує кілька взаємопов’язаних функцій, які є важливими для роботи сайту:
1. Централізоване зберігання файлів
Кожен файл, що складає ваш сайт — від HTML головної сторінки до найменшої іконки — зберігається у кореневому каталозі або одному з його підкаталогів. Веб-сервер читає виключно з цього місця при відповіді на HTTP-запити.
2. Точка входу для конфігурації веб-сервера
Веб-сервери, такі як Apache та Nginx, явно налаштовані вказувати на кореневий каталог як директиву DocumentRoot (Apache) або root (Nginx). Ця конфігурація повідомляє серверу: «Починай тут при пошуку файлів для обслуговування».
# Apache VirtualHost example
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /var/www/html/example.com/public
</VirtualHost># Nginx server block example
server {
listen 80;
server_name www.example.com;
root /var/www/html/example.com/public;
index index.php index.html;
}3. Структурна організація
Кореневий каталог є батьківським контейнером для всіх підкаталогів, які логічно організовують контент вашого сайту — відокремлюючи ресурси від скриптів, завантаження від основних файлів, а публічний контент від приватної конфігурації.
4. Межа безпеки
Кореневий каталог визначає межу того, що є публічно доступним. Файли, розміщені *поза* кореневим каталогом, не можуть бути доступні через веб-браузер, що є критично важливим принципом безпеки для захисту конфіденційних файлів конфігурації.
Як знайти кореневий каталог
Метод 1: Використання cPanel (Спільний хостинг)
cPanel є найбільш широко використовуваною панеллю керування для середовищ Спільного веб-хостингу. Щоб знайти кореневий каталог:
- Увійдіть до свого облікового запису cPanel за адресою
yourdomain.com/cpanelабо через панель керування вашого хостинг-провайдера. - Перейдіть до Файли → Менеджер файлів.
- У дереві каталогів ліворуч знайдіть папку з назвою
public_html— це ваш веб-корінь. - Будь-який файл, розміщений безпосередньо всередині
public_html, доступний за кореневою URL-адресою вашого домену (наприклад,example.com/filename.html).
Ви також можете перевірити кореневий каталог документів, перейшовши до Домени → Домени або Додаткові домени у cPanel, де шлях до кореневого каталогу документів явно вказаний для кожного домену.
Метод 2: Використання FTP або SFTP (FileZilla)
Доступ через FTP/SFTP працює практично в усіх хостингових середовищах:
- Відкрийте FileZilla (або ваш улюблений FTP-клієнт).
- Введіть ім’я хоста, ім’я користувача, пароль та порт (21 для FTP, 22 для SFTP — завжди надавайте перевагу SFTP з міркувань безпеки).
- Після підключення ви потрапите до домашнього каталогу. Шукайте папки з назвами
public_html,www,htdocsабоhttpdocs. - Перейдіть до цієї папки — це ваш кореневий каталог.
- Шлях, відображений в адресному рядку FileZilla, підтверджує точний шлях на сервері.
> Порада з безпеки: Завжди використовуйте SFTP замість звичайного FTP. SFTP шифрує ваші облікові дані та передачу файлів, запобігаючи перехопленню.
Метод 3: Використання SSH (VPS та виділені сервери)
Доступ через SSH є найпотужнішим методом і є стандартною практикою на Виділених серверах та у середовищах VPS:
# Connect to your server
ssh username@your-server-ip
# Navigate to the default Apache/Nginx root
cd /var/www/html
# List contents to confirm
ls -la
# Find the document root from Apache configuration
grep -r "DocumentRoot" /etc/apache2/sites-enabled/
# Find the root from Nginx configuration
grep -r "root " /etc/nginx/sites-enabled/Якщо ви використовуєте користувацьку конфігурацію, кореневий каталог документів визначений у файлі вашого віртуального хоста. Перевірка активної конфігурації є найнадійнішим способом підтвердити точний шлях.
Метод 4: Використання панелі керування на VPS (cPanel, DirectAdmin, Plesk)
Якщо ви використовуєте VPS з cPanel або іншою панеллю, інтерфейс працює аналогічно до спільного хостингу. Кореневий каталог документів зазвичай відображається у розділі керування доменами і за замовчуванням має значення /home/username/public_html/ для основного домену.
Структура кореневого каталогу: найкращі практики
Добре організований кореневий каталог є ознакою професійно керованого сайту. Ось рекомендована структура для типового веб-застосунку:
/public_html/ ← Web root (publicly accessible)
├── index.php ← Entry point / homepage
├── .htaccess ← Apache configuration (rewrites, security)
├── robots.txt ← Search engine crawl instructions
├── sitemap.xml ← XML sitemap for SEO
├── assets/
│ ├── css/ ← Stylesheets
│ ├── js/ ← JavaScript files
│ └── images/ ← Image files
├── uploads/ ← User-uploaded content
├── includes/ ← PHP includes (header, footer, functions)
└── blog/ ← Blog section subdirectory
/home/username/ ← One level ABOVE the web root (private)
├── config/
│ ├── .env ← Environment variables (NOT publicly accessible)
│ └── db-config.php ← Database credentials (NOT publicly accessible)
└── backups/ ← Backup archivesКонфіденційні файли, такі як .env, облікові дані бази даних та API-ключі, ніколи не повинні розміщуватися всередині веб-кореня. Зберігання їх на один каталог вище гарантує, що вони повністю недоступні через HTTP.
Найкращі практики безпеки для кореневого каталогу
Неправильні налаштування безпеки на рівні кореневого каталогу є одними з найпоширеніших причин злому сайтів. Дотримуйтесь цих практик суворо:
1. Встановіть правильні права доступу до файлів
Неправильні права доступу є основною причиною як вразливостей безпеки, так і помилок сервера:
# Set correct permissions for files (read/write for owner, read-only for others)
find /var/www/html -type f -exec chmod 644 {} ;
# Set correct permissions for directories (read/write/execute for owner, read/execute for others)
find /var/www/html -type d -exec chmod 755 {} ;
# Set ownership to the web server user
chown -R www-data:www-data /var/www/html| Тип ресурсу | Рекомендовані права | Пояснення |
|---|---|---|
| Звичайні файли | 644 | Власник: читання+запис; Група/Інші: лише читання |
| Каталоги | 755 | Власник: повний доступ; Група/Інші: читання+виконання |
| Файли конфігурації | 600 | Власник: лише читання+запис; для інших доступу немає |
| Виконувані скрипти | 750 | Власник: повний доступ; Група: читання+виконання; Інші: немає |
2. Захист конфіденційних файлів за допомогою .htaccess (Apache)
Використовуйте правила .htaccess для блокування прямого доступу до конфіденційних файлів:
# Block access to .env files
<Files ".env">
Order allow,deny
Deny from all
</Files>
# Block access to configuration files
<FilesMatch ".(ini|log|conf|sql|bak)$">
Order allow,deny
Deny from all
</FilesMatch>
# Disable directory listing
Options -Indexes3. Вимкніть перегляд каталогів
Якщо у каталозі немає файлу index.html або index.php, багато веб-серверів за замовчуванням відображатимуть повний список його вмісту — розкриваючи структуру ваших файлів будь-кому. Завжди вимикайте це:
- Apache: Додайте
Options -Indexesдо вашого.htaccessабо конфігурації віртуального хоста. - Nginx: Переконайтеся, що
autoindex off;встановлено у вашому серверному блоці (за замовчуванням вимкнено).
Завжди розміщуйте файл index.html або index.php у кожному каталозі, щоб запобігти випадковому розкриттю.
4. Зберігайте конфіденційні файли поза веб-коренем
Це єдиний найважливіший принцип безпеки для керування кореневим каталогом:
- Облікові дані бази даних, API-ключі та файли
.envповинні знаходитися вище веб-кореня. - Використовуйте
requireабоincludePHP з абсолютними шляхами для посилання на них із вашого застосунку. - Якщо вам необхідно зберігати файли конфігурації всередині веб-кореня, використовуйте правила
.htaccessдля блокування HTTP-доступу до них.
5. Впровадьте SSL/TLS
Обслуговування вашого сайту через HTTPS шифрує всі дані під час передачі між сервером і браузером відвідувача. SSL-сертифікат більше не є необов’язковим — це базова вимога безпеки та підтверджений фактор ранжування Google. Налаштуйте веб-сервер для перенаправлення всього HTTP-трафіку на HTTPS та встановіть заголовки HSTS для максимального захисту.
Керування кореневим каталогом для популярних CMS-платформ
WordPress
WordPress має чітко визначену структуру кореневого каталогу, яку необхідно розуміти для безпечного керування платформою:
/public_html/
├── index.php ← WordPress bootstrap file
├── wp-config.php ← Database credentials & settings (move above web root if possible)
├── wp-login.php ← Login page (consider restricting by IP)
├── .htaccess ← WordPress permalink configuration
├── wp-admin/ ← Admin dashboard (restrict access)
├── wp-includes/ ← Core WordPress files (do not modify)
└── wp-content/
├── themes/ ← Installed themes
← Installed plugins
└── uploads/ ← Media library filesКритичні поради щодо кореневого каталогу WordPress:
- Перемістіть
wp-config.phpна один каталог вище веб-кореня — WordPress автоматично знайде його там. - Обмежте доступ до
wp-admin/таwp-login.phpза IP-адресою за допомогою.htaccess. - Ніколи не змінюйте файли всередині
wp-includes/— вони будуть перезаписані під час наступного оновлення. - Регулярно перевіряйте каталог
wp-content/uploads/на наявність шкідливих завантажених файлів.
Joomla
Структура кореневого каталогу Joomla слідує аналогічній схемі:
/public_html/
├── index.php ← Main entry point
├── configuration.php ← Database & site configuration
├── .htaccess ← URL rewriting rules
├── administrator/ ← Admin panel (restrict access)
├── components/ ← Frontend components
├── modules/ ← Joomla modules
├── plugins/ ← Joomla plugins
└── templates/ ← Site templatesПеремістіть configuration.php за межі веб-кореня або обмежте доступ до нього через .htaccess, щоб запобігти розкриттю облікових даних бази даних.
Laravel / Сучасні PHP-фреймворки
Сучасні PHP-фреймворки, такі як Laravel, спеціально розроблені з урахуванням безпеки кореневого каталогу. Лише підкаталог public/ відкритий як веб-корінь:
/var/www/laravel-app/ ← Application root (NOT the web root)
├── app/ ← Application logic
├── config/ ← Configuration files
├── .env ← Environment variables
├── vendor/ ← Composer dependencies
└── public/ ← THIS is the web root (DocumentRoot points here)
├── index.php
└── assets/Ця архітектура є найкращою практикою безпеки — конфіденційні файли структурно неможливо отримати через HTTP.
Стратегії резервного копіювання кореневого каталогу
Регулярне резервне копіювання кореневого каталогу є обов’язковим. Одне випадкове видалення, невдале оновлення або порушення безпеки може вивести ваш сайт з ладу. Ось найефективніші підходи до резервного копіювання:
Ручне резервне копіювання через SSH
# Create a compressed archive of the entire web root
tar -czf /home/username/backups/webroot-$(date +%Y%m%d).tar.gz /var/www/html/
# Transfer the backup to a remote location using SCP
scp /home/username/backups/webroot-$(date +%Y%m%d).tar.gz user@backup-server:/backups/Автоматизоване резервне копіювання за допомогою Cron
# Edit crontab
crontab -e
# Add a daily backup job at 2:00 AM
0 2 * * * tar -czf /home/username/backups/webroot-$(date +%Y%m%d).tar.gz /var/www/html/ 2>/dev/nullВикористання rsync для інкрементного резервного копіювання
# Sync web root to a backup directory (only copies changed files)
rsync -avz --delete /var/www/html/ /mnt/backup/webroot/Резервне копіювання від хостинг-провайдера
Багато рішень керованого хостингу включають автоматизоване щоденне резервне копіювання. Плани VPS Хостингу AlexHost включають опції резервного копіювання, які захищають все ваше серверне середовище, забезпечуючи надійну страховку поряд з вашими власними процедурами резервного копіювання.
Усунення поширених проблем з кореневим каталогом
| Проблема | Ймовірна причина | Рішення |
|---|---|---|
| Помилка 403 Forbidden | Відсутній індексний файл або неправильні права доступу | Додайте index.html/index.php; перевірте права доступу до каталогу (755) |
| 404 Not Found на головній сторінці | Неправильний шлях DocumentRoot у конфігурації сервера | Перевірте DocumentRoot в Apache або root у конфігурації Nginx |
| Файли не оновлюються після завантаження | Кешування на стороні браузера або сервера | Очистіть кеш браузера; перевірте заголовки кешування сервера |
| PHP-файли завантажуються замість виконання | PHP не налаштований для цього каталогу | Перевірте, чи увімкнено обробник PHP у конфігурації сервера/хостингу |
| Відкритий перегляд каталогів | Увімкнено Options Indexes | Додайте Options -Indexes до .htaccess або конфігурації сервера |
| Відмовлено у доступі при записі файлу | Неправильне власництво файлу/каталогу | Виконайте chown -R www-data:www-data /var/www/html |
Вибір правильного хостингового середовища для ваших потреб кореневого каталогу
Рівень контролю над кореневим каталогом значною мірою залежить від вашого хостингового середовища:
- Спільний веб-хостинг: Кореневий каталог попередньо налаштований як
public_html. Простий у використанні, але з обмеженими можливостями налаштування. Найкраще підходить для невеликих сайтів та початківців.
- VPS Хостинг: Повний root-доступ до сервера. Ви самостійно визначаєте кореневий каталог документів, налаштовуєте веб-сервер та керуєте всіма параметрами безпеки. Ідеально підходить для зростаючого бізнесу та розробників, яким потрібна гнучкість.
- Виділені сервери: Максимальний контроль та продуктивність. Весь сервер належить вам — налаштовуйте кореневий каталог, веб-сервер та стек безпеки саме так, як вам потрібно. Найкраще підходить для сайтів з високим трафіком та корпоративних застосунків.
- Панелі керування VPS: Поєднують потужність VPS із зручністю графічної панелі керування, роблячи керування кореневим каталогом доступним без глибоких знань командного рядка.
Висновок
Кореневий каталог є архітектурною основою кожного сайту. Він визначає, як веб-сервер знаходить і обслуговує контент, встановлює межу між публічними та приватними файлами, і безпосередньо впливає на рівень безпеки та організаційну чіткість вашого сайту. Незалежно від того, чи керуєте ви простим сайтом-брошурою на спільному хостингу, чи складним середовищем з кількома застосунками на виділеному сервері, принципи залишаються незмінними: підтримуйте порядок, зберігайте конфіденційні файли поза публічним веб-коренем, забезпечуйте правильні права доступу та регулярно створюйте резервні копії.
Оволодіння керуванням кореневим каталогом — це не просто технічна галочка, а ключова компетенція, яка запобігає простоям, усуває вразливості безпеки та робить ваші сайти значно простішими в обслуговуванні та масштабуванні з часом.
