База знань›Webhosting›Файл .htaccess

Webhosting – Файл .htaccess

На цій сторінціКоли використовувати цей посібникФайл .htaccessRestore default .htaccessНалаштування .htaccessОбмеження .htaccess на вебхостингуПоширені проблемиЧасті запитання

Потрібна допомога з веб-сайтом? Знайдіть свого спеціаліста з VEDOS Profi ⧉.

У цій статті ви дізнаєтеся:


Коли використовувати цей посібник

Скористайтеся цим посібником, наприклад, у таких ситуаціях:

  • Субдомен або інший домен показує вміст головного сайту, або посилання ведуть на адреси з /domains/. Див. Субдомен показує інший сайт.
  • Після редагування .htaccess відображається Internal Server Error або Too Many Redirects. Див. Нове налаштування не працює.
  • Плагін безпеки WordPress повідомляє про помилку open_basedir restriction in effect для файлу .htaccess. Див. Плагін повідомляє про open_basedir.
  • Вам потрібно повернути типовий .htaccess, тому що ви його видалили або пошкодили, або створюєте новий сайт на місці старого. Інструкцію знайдете в розділі Restore default .htaccess.
  • Ви хочете примусово ввімкнути HTTPS, перенаправити стару адресу або обмежити доступ за IP-адресою. Див. Налаштування .htaccess.
  • Сайт, наприклад редактор сторінок, нестабільно завантажує скрипти. Можете спробувати вимкнути proxy cache.

Файл .htaccess

Файл .htaccess (на початку має бути крапка) містить налаштування сервера Apache, які керують роботою вебхостингу. До найпоширеніших застосувань належать маршрутизація в структурі каталогів вебхостингу, примусове використання HTTPS, переадресація вебадрес і вимкнення proxy cache.

Доступ до файлу .htaccess

Щоб отримати доступ до файлу .htaccess виконайте такі дії:

  1. Увійдіть до хостингу через FTP, наприклад, за допомогою клієнта WebFTP ⧉ (Посібник).
  2. Відкрийте папку www.
  3. Серед файлів знайдіть файл з назвою .htaccess.
WebFTP - Файл .htaccess у папці www
WebFTP – Файл .htaccess у папці www

Правила у стандартному .htaccess стосуються всіх сайтів. Правила у файлах .htaccess в інших каталогах (часто, наприклад, www/domains/domain.tld) стосуються лише вмісту цього каталогу та всіх його підкаталогів.

Файлів .htaccess може бути кілька — це залежить від кількості каталогів, у яких потрібно задати окремі правила.


Restore default .htaccess

Якщо вам не вдається знайти причину помилки, спричиненої зміненим стандартним файлом .htaccess, або ви випадково видалили цей файл, ви можете відновити його безпосередньо в клієнтській адміністрації.

  1. Увійдіть до клієнтської адміністрації ⧉.
  2. У верхньому меню виберіть Hosting services Webhosting або WMS.
  3. Виберіть вебхостинг, для якого потрібно відновити файл .htaccess.
  4. У лівому меню натисніть Tools.
  5. У таблиці Restore default .htaccess натисніть кнопку Restore .htaccess.
Кнопка для відновлення стандартного файлу .htaccess
Кнопка для відновлення стандартного файлу .htaccess

Одночасно з відновленням стандартного файлу .htaccess цією кнопкою ви створюєте резервну копію поточного файлу, яку система копіює в ту саму папку.

Кнопка відновлює лише файл .htaccess у папці www. Інші файли .htaccess, наприклад створені системами керування вмістом, потрібно відновлювати іншим способом.

Стандартний файл .htaccess не містить правил для HTTPS. Якщо ви використовуєте HTTPS, додайте правила до відновленого файлу вручну.

Налаштування .htaccess

Умови та команди у файлі .htaccess використовують регулярні вирази. Якщо ви з ними не знайомі, файл усе одно можна редагувати, але уважно дотримуйтесь інструкції. Несправний .htaccess спричиняє помилку 500 – Internal Server Error.

Перш ніж почати редагувати файл .htaccess, створіть його резервну копію.

У цьому розділі ви знайдете інструкції щодо:

Маршрутизація в структурі каталогів Webhosting

Основне призначення нашого стандартного файлу .htaccess — спрямовувати запити до правильних папок Webhosting, зокрема domains і subdom. Якщо ви помічаєте помилки навігації по каталогах, виправте файл .htaccess так, щоб він містив наведений нижче текст, або повністю відновіть.

RewriteEngine On

# цілі домени (аліаси)
RewriteCond %{REQUEST_URI} !^domains/
RewriteCond %{REQUEST_URI} !^/domains/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteCond %{DOCUMENT_ROOT}/domains/%2 -d
RewriteRule (.*) domains/%2/$1 [DPI]

# субдомени (з www на початку або без нього)
RewriteCond %{REQUEST_URI} !^subdom/
RewriteCond %{REQUEST_URI} !^/subdom/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)\.([^\.]*)\.([^\.]*)$
RewriteCond %{DOCUMENT_ROOT}/subdom/%2 -d
RewriteRule (.*) subdom/%2/$1 [DPI]

# аліаси - правильне перенаправлення за відсутності /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^domains/[^/]+/(.+[^/])$ /$1/ [R]

# субдомени - правильне перенаправлення за відсутності /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^subdom/[^/]+/(.+[^/])$ /$1/ [R]

Налаштування HTTPS

Під час активації HTTPS ви, серед іншого, налаштовуєте правило .htaccess, яке вибирає варіант із HTTPS як стандартний. Додайте його безпосередньо у файл .htaccess у папці www, одразу під рядок RewriteEngine On.

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R=301,L]
Header set Content-Security-Policy "upgrade-insecure-requests;"

Додавання цього коду може призвести до блокування нашого інсталятора застосунків. Якщо під час встановлення ви зіткнетеся з проблемою через файл .htaccess, тимчасово відновіть його, а після успішного встановлення знову перезапишіть автоматично створеною резервною копією.

Стандартний файл .htaccess не містить правил для HTTPS. Якщо ви його відновили і хочете використовувати правила для HTTPS, додайте їх знову.

Переадресація URL

Наведеним нижче правилом, відомим як переадресація 301, ви повідомляєте браузеру та пошуковим системам, що сторінку остаточно переміщено зі старої адреси на нову. Зокрема, пошукові системи тоді не сприйматимуть переміщений вміст як дубльований.

Скопіюйте наведений нижче текст і вставте у файл .htaccess під рядок RewriteEngine On. Потім змініть його за такими правилами:

  1. У тексті oldaddress\.tld замініть текст oldaddress адресою, з якої виконується переадресація, а tld замініть правильним закінченням. Переконайтеся, що перед символом . (крапкою) стоїть символ \ (зворотна скісна риска).
  2. У тексті http://novaadresa.tld замініть newaddress.tld адресою, на яку ви переадресовуєте сайт. Якщо нова адреса використовує https, замініть також текст http.
  3. Якщо потрібно переадресовувати на головну сторінку нової адреси, видаліть у другому рядку символи $1.
RewriteCond %{HTTP_HOST} ^(www\.)?oldaddress\.tld$
RewriteRule (.*) http://newaddress.tld/$1 [R=301,L]

Обмеження доступу для вибраних IP-адрес

У файлі .htaccess можна обмежити доступ до певних (або всіх) файлів так, щоб він був можливий лише з певних IP-адрес. Ось приклад блокування доступу до файлу wp-login.php (сторінка входу в адміністрування WordPress):

<Files wp-login.php>
Order Deny,Allow
Deny from all
Allow from X.X.X.X
</Files>

Код можна змінити за такими правилами:

  • У <Files ___> можна вказати або конкретний файл, або символ * для всіх файлів у цій папці та підпапках.
  • Адресу X.X.X.X замініть вашою адресою IPv4 або IPv6.
  • Директив Allow from X.X.X.X можна вказати кілька, кожну в окремому рядку.

Спроби доступу до цього файлу з інших IP-адрес завершуватимуться помилкою 403.

Єдиний спосіб отримати доступ до файлу із заблокованої адреси — додати цю адресу до списку дозволених або видалити код. Жодного з цих втручань служба підтримки клієнтів не виконує.

Вимкнення proxy cache

Якщо потрібно вимкнути proxy cache для сайту або його частини (каталогу, піддомену), додайте до файлу .htaccess такий код:

# DISABLE CACHING
<IfModule mod_headers.c>
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires 0
</IfModule>

Обмеження .htaccess на вебхостингу

Щоб запобігти небажаній поведінці сервера, ми встановили для файлу .htaccess певні обмеження.

Використання будь-якої недозволеної команди чи параметра команди Options призведе до непрацездатності всього сайту, що проявиться помилкою 500 – Internal Server Error.

У конфігурації вебсервера дозволено використовувати такі категорії команд для htaccess:

  • AuthConfig
  • FileInfo
  • Limit
  • Indexes
  • Options*

Уникайте використання команд:

  • php_flag
  • php_value
  • ServerSignature
  • SetEnv
  • SetHandler
  • XBitHack
  • AddHandler
  • Options*

* Для команди Options дозволено використовувати лише параметр Indexes, решта заборонені.


Поширені проблеми

До поширених проблем із файлом .htaccess належать:

Нове налаштування не працює

Проблема: Після зміни налаштувань .htaccess нова поведінка не проявляється або сайт перестав працювати зовсім. Найчастіше це помилки Internal Server Error і Too Many Redirects.

Причина: Може йтися про помилку в назві чи розташуванні файлу .htaccess, розташуванні коду в цьому файлі або його правильності.

Рішення: Ретельно перевірте та виправте помилки:

  1. Перевірте, що файл розташований у правильній папці (це не обов’язково лише www) і називається саме .htaccess, включно з крапкою на початку.
  2. Переконайтеся, що код розміщено в правильному місці файлу (наприклад, на початку після команди RewriteEngine On), і що всі частини, які містили замінний текст (наприклад, domain.tld), замінено правильним текстом.
  3. Якщо файл містить заблоковані команди, вилучіть відповідні рядки, поставивши символ # на початок рядка.

Відновлення стандартного .htaccess не працює

Проблема: Після відновлення стандартного .htaccess сайт поводиться так само.

Причина: Або ви відновлюєте не той .htaccess, або неправильне відображення сайту закешоване.

Рішення: Оновіть сторінку без кешу браузера комбінацією клавіш Ctrl+Shift+R.

Якщо потрібно відновити стандартний стан файлу .htaccess не в папці www (або .htaccess системи керування вмістом, наприклад WordPress), отримайте його з резервної копії або вебсайту системи керування вмістом.

Невідома програма перезаписує .htaccess

Проблема: Після зміни налаштувань .htaccess щось невдовзі перезаписує його небажаним кодом.

Причина: На вебхостингу розміщено програмне забезпечення (здебільшого плагін, може бути й шкідливе ПЗ), яке генерує в .htaccess власний код.

Рішення: Знайдіть джерело змін у файлі .htaccess:

  1. Плагіни безпеки здебільшого за допомогою .htaccess блокують доступ до чутливих частин системи, наприклад до адміністрування системи керування вмістом. Під час спроби доступу ви часто бачите помилку 403: Forbidden. Рішення — змінити налаштування або вимкнути відповідний плагін безпеки.
  2. Оновлення системи керування вмістом можуть додати у свій .htaccess проблемний код, який найчастіше спричиняє помилку 500 – Internal Server Error. Рішення — вимкнути автоматичні оновлення та швидко втрутитися в код .htaccess одразу після ручного оновлення.
  3. Шкідливе ПЗ зазвичай порушує відображення сторінки або переадресовує її на небажаний URL. Рішення — ретельне очищення сайту від вірусів, яке VEDOS, на жаль, не здійснює і не надає щодо нього підтримки.

Субдомен показує інший сайт

Проблема: Субдомен або інший домен показує головний сайт, головну сторінку, або посилання ведуть на адреси з /domains/, хоча ваш сайт завантажено в правильну папку.

Причина: Файл .htaccess у папці www не спрямовує запити до папок domains і subdom, або його перекриває інший .htaccess у каталозі сайту. Часто також трапляється неправильна адреса сайту в налаштуваннях системи керування вмістом (у базі даних адреса головного домену замість субдомену).

Рішення: У папці www відновіть типовий .htaccess, або вставте код із розділу маршрутизація в структурі каталогів. Перевірте структуру каталогів за статтями Webhosting – Субдомени і Webhosting – Відновлення структури каталогів (скидання) FTP. У системі керування вмістом переконайтеся, що в налаштуваннях указано адресу субдомену. Наприкінці оновіть сторінку без кешу браузера комбінацією клавіш Ctrl+Shift+R.

Плагін повідомляє про open_basedir

Проблема: Плагін безпеки WordPress (наприклад, Wordfence або Really Simple Security) повідомляє open_basedir restriction in effect. File(/.htaccess) is not within the allowed path.

Причина: Команда open_basedir на вебхостингу заблокована з міркувань безпеки, тому плагін не може змінити файл .htaccess.

Рішення: Поверніть .htaccess WordPress до типового вигляду згідно з документацією WordPress. Якщо доступ через WebFTP не працює, підключіться десктопним FTP-клієнтом, наприклад FileZilla. Подальші кроки описано в розділі Невідома програма перезаписує .htaccess.


Часті запитання

Як відновити стандартний .htaccess системи керування вмістом?

Перш ніж почати редагувати файл .htaccess, створіть його резервну копію. Якщо її немає, перевстановіть систему керування вмістом або знайдіть стандартний вміст .htaccess тієї ж версії CMS в іншому місці. Якщо нічого не допомагає, зверніться до служби підтримки.

Де знайти розширені команди .htaccess?

Для розширених команд .htaccess ми не надаємо підтримки. Деякі з них ви знайдете в статтях спільноти в категорії .htaccess ⧉. Користуючись інструкціями з інтернету, пам’ятайте про обмеження .htaccess на Webhosting.

У мене немає доступу через WebFTP. Чи виправить .htaccess підтримка?

Спершу спробуйте підключитися десктопним FTP-клієнтом, наприклад FileZilla. Якщо ви наполягаєте на виправленні з нашого боку, надайте підтримці тимчасовий FTP-доступ і надішліть запит через контактну форму ⧉.

Сайт нестабільно завантажує скрипти. Чи допоможе вимкнення proxy cache?

Може, але це не гарантовано. Вставте в .htaccess код із розділу Вимкнення proxy cache. Якщо це не допоможе, поверніть налаштування до початкового стану.

Чи була ця стаття корисною?

Ваша оцінка допомагає нам покращувати статті.

Ваше повідомлення прочитає редакція документації, але вона на нього не відповідає. Якщо вам потрібна допомога, звертайтеся до нас через контактну форму. Не вказуйте тут паролі чи особисті дані.

Не знайшли те, що шукаєте?

Запитайте інших клієнтів на сайті спільноти Help.