Інструкції та туторіали по хостингу Практика

Файл .htaccess на хостингу: маленький файл, який вирішує долю вашого сайту

Серверна кімната дата-центру з конфігурацією apache сервера для хостингу

Уявіть собі: ви наймаєте охоронця для бізнес-центру. Він стоїть на вході, перевіряє перепустки, направляє відвідувачів на потрібний поверх, блокує підозрілих типів. А тепер уявіть, що цей охоронець - текстовий файл розміром 2 кілобайти. Саме так працює .htaccess на вашому хостингу. Його ігнорують 80% власників сайтів, а ті 20%, що налаштовують правильно, отримують прискорення, захист і SEO-бонуси одночасно. Сьогодні я покажу вам, як перетворити цей непримітний файл на вашу суперсилу.

Що таке .htaccess і чому він важливіший, ніж ви думаєте

Файл .htaccess (скорочення від Hypertext Access) - це конфігураційний файл веб-сервера Apache. Він лежить у кореневій папці вашого сайту і діє як набір інструкцій, які сервер виконує до того, як віддасть сторінку відвідувачу. Кожен запит проходить через нього. Кожен.

Ось що він вміє робити:

  • Перенаправлення - редиректи 301, 302, переадресація зі старих URL на нові
  • Захист - блокування IP-адрес, захист директорій паролем, обмеження доступу до файлів
  • Оптимізація - gzip-стиснення, кешування браузера, заголовки Expires і Cache-Control
  • SEO-налаштування - канонічні URL, прибирання дублів, примусовий HTTPS
  • Кастомні сторінки помилок - замість стандартної 404 ваш фірмовий дизайн

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

Студент вивчає як налаштувати htaccess на shared хостингу за інструкцією
Студент вивчає як налаштувати htaccess на shared хостингу за інструкцією

Перші кроки: де знайти, як редагувати і як не вбити сайт

Перше правило клубу .htaccess - завжди робити копію перед редагуванням. Серйозно. Я бачив, як досвідчені розробники клали продакшн-сайти одним зайвим символом. Завантажте файл через FTP або файловий менеджер у cPanel, збережіть як .htaccess_backup і тільки тоді починайте.

Де шукати файл? У кореневій директорії сайту - зазвичай це public_html або www. Файл починається з крапки, тому деякі FTP-клієнти його приховують. У FileZilla натисніть Сервер → Показати приховані файли. У cPanel увімкніть "Show Hidden Files" у налаштуваннях файлового менеджера.

  1. Зайдіть у файловий менеджер вашого хостингу або підключіться через FTP
  2. Знайдіть .htaccess у кореневій папці сайту
  3. Скачайте копію на локальний комп'ютер
  4. Відкрийте для редагування (тільки простий текстовий редактор - Notepad++, VS Code, nano)
  5. Після кожної зміни перевіряйте сайт у браузері
  6. Якщо бачите помилку 500 - негайно відновлюйте бекап

Якщо файлу немає - створіть порожній текстовий файл з ім'ям .htaccess. Без розширення, саме з крапкою на початку. На Windows для цього краще використовувати командний рядок: echo. > .htaccess, бо провідник не дасть створити файл, що починається з крапки.

Прискорення сайту: gzip, кешування і заголовки, які змінюють все

Знаєте, що найбільше дратує Google і ваших відвідувачів одночасно? Повільне завантаження. А знаєте, що може зрізати час завантаження на 40-70% без зміни жодного рядка коду самого сайту? Правильно - .htaccess.

Ось рецепт, який я використовую на кожному проєкті:

"Компресія та кешування на рівні сервера - це найдешевший спосіб покращити Core Web Vitals. Ви не переписуєте код, не змінюєте дизайн, просто кажете серверу працювати розумніше." - Patrick Meenan, співтворець WebPageTest

Увімкнення gzip-стиснення:

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css
AddOutputFilterByType DEFLATE text/javascript application/javascript
AddOutputFilterByType DEFLATE application/json application/xml
</IfModule>

Кешування в браузері (щоб повторні відвідувачі не завантажували одне й те саме):

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
</IfModule>

Різниця в цифрах:

Параметр Без оптимізації З .htaccess-оптимізацією
Розмір HTML-сторінки 85 КБ 22 КБ (gzip)
Час завантаження CSS 320 мс 45 мс (кеш)
Загальний час першого завантаження 3.8 сек 2.1 сек
Повторне завантаження 2.9 сек 0.8 сек

Це реальні дані з проєкту на shared-хостингу в Нідерландах, 2024 рік. Один файл - мінус 2 секунди.

Замок на платі символізує захист сайту через htaccess налаштування хостинг
Замок на платі символізує захист сайту через htaccess налаштування хостинг

Безпека: як закрити двері, про які ви навіть не знали

Більшість зломів починаються не з хакерських атак у стилі голлівудських фільмів. Вони починаються з доступу до wp-config.php, з перебору паролів через xmlrpc.php, з доступу до .env файлу, де лежать ваші паролі від бази даних. І .htaccess може закрити всі ці діри.

Захист wp-config.php (для WordPress):

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

Блокування доступу до .env та інших чутливих файлів:

<FilesMatch "^.(env|htpasswd|htaccess)">
Order Allow,Deny
Deny from all
</FilesMatch>

Вимкнення перегляду директорій (щоб ніхто не бачив список файлів у папці):

Options -Indexes

Один рядок. П'ять символів і мінус. А без нього будь-хто може зайти на yoursite.com/uploads/ і побачити всі ваші файли. Перевірте прямо зараз - я зачекаю.

Обов'язково додайте захист від хотлінкінгу - це коли інші сайти підставляють прямі посилання на ваші зображення і з'їдають ваш трафік:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://(www.)?yoursite.com [NC]
RewriteRule .(jpg|jpeg|png|gif|webp)$ - [F,NC,L]

SEO-редиректи: мистецтво не втрачати позиції при змінах

Ви переробили структуру сайту. Старі URL більше не працюють. Що робить Google? Відправляє їх у небуття. Що бачить відвідувач? Помилку 404. Що втрачаєте ви? Позиції, трафік, гроші. А потрібно було додати кілька рядків у .htaccess.

301-й редирект (постійний - передає ~95% SEO-ваги):

Redirect 301 /stara-storinka https://yoursite.com/nova-storinka

Примусовий HTTPS:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Прибирання www або додавання www (вибирайте одне!):

Без www:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.yoursite.com [NC]
RewriteRule ^(.*)$ https://yoursite.com/$1 [L,R=301]

Чому це критично? Бо yoursite.com і www.yoursite.com для Google - два різні сайти. Дублі контенту. Розмитий посилковий профіль. Втрата позицій. Один блок у .htaccess вирішує проблему назавжди.

Ілюстрація оптимізації швидкості сайту з редиректами htaccess для SEO WordPress
Ілюстрація оптимізації швидкості сайту з редиректами htaccess для SEO WordPress

Помилки, які зустрічаються на кожному другому хостингу

За 15 років я накопичив колекцію фейлів з .htaccess, яку можна видавати як книгу жахів. Ось топ найпоширеніших:

  • Дублювання RewriteEngine On - якщо цей рядок вже є (наприклад, від WordPress), не додавайте другий. Один раз достатньо.
  • Відсутність перевірки модулів - якщо написати правило для mod_rewrite, а модуль вимкнений на сервері, отримаєте Error 500. Завжди обгортайте в <IfModule>.
  • Неправильний порядок правил - Apache читає .htaccess зверху вниз. Якщо загальний редирект стоїть перед конкретним, конкретний ніколи не спрацює.
  • Редагування через Word або Google Docs - ці редактори додають невидимі символи (BOM, розумні лапки). Використовуйте тільки plain text редактори.

Ще одна класика: люди копіюють готові рецепти з блогів 2015 року, де синтаксис розрахований на Apache 2.2, а на сервері стоїть Apache 2.4. Директиви Order Allow,Deny замінені на Require all denied у новій версії. Перевіряйте версію свого Apache через phpinfo() або запитайте у техпідтримки хостингу.

Коли .htaccess не допоможе

Давайте будемо чесними - .htaccess не панацея. Якщо ваш хостинг працює на Nginx без Apache, файл .htaccess просто ігнорується. Nginx має свій конфіг - nginx.conf. Деякі хостинги (наприклад, на базі LiteSpeed) підтримують .htaccess, але з обмеженнями.

Також .htaccess не замінить:

  1. Нормальну оптимізацію зображень - стиснення і WebP робіть на рівні файлів
  2. Чистку бази даних - повільні запити MySQL не вирішуються конфігом Apache
  3. CDN - .htaccess кешує на рівні одного сервера, а CDN розподіляє по всьому світу
  4. Файрвол рівня додатку - WAF (Cloudflare, Sucuri) дає набагато глибший захист

Але як базовий інструмент, який доступний на 90% shared-хостингів, не потребує SSH-доступу і працює миттєво після збереження - .htaccess залишається одним з найнедооціненіших інструментів у арсеналі вебмайстра.

Питання до вас: коли ви востаннє відкривали .htaccess на своєму хостингу? Якщо відповідь - "ніколи" або "не пам'ятаю" - зробіть це сьогодні. Можливо, там вже живуть рядки, які гальмують ваш сайт. А можливо, там порожньо - і це найбільша втрачена можливість, яку ви можете виправити за 15 хвилин.