Black Friday! Отримайте до 9 місяців Хостингу в подарунок!

Детальніше

Інструкція для веб-майстрів: секрети налаштувань файлу .htaccess

post thumbnail

Файл .htaccess – це файл для додаткових налаштувань web-сервера Apache. Правила в .htaccess застосовуються для каталогу, в якому він створений, і для всіх його підкаталогів. Це дозволяє додати правила як для всього сайту, так і для конкретного каталогу. Як можна помітити, ім’я даного файлу починається з крапки, що в unix-системах вказує на те, що файл є прихованим.

Основними перевагами налаштувань в .htaccess є:

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

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

Крок 1 – Переспрямування з http на https

Для перенаправлення всіх сторінок сайту з http на https досить додати таке правило в початок файлу .htaccess, який розташований в кореневій папці сайту:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !robots.txt$
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Крок 2 – Обмеження доступу до сайту

Цим правилом ми заборонимо доступ до сайту або до директорії сайту, де розташований файл .htaccess з подібними правилами, для всіх, крім IP-адреси 123.123.123.123. За аналогією можна вказувати кілька рядків з IP, яким доступ потрібно дозволити:

deny from all
allow from 123.123.123.123

Даним правилом ми навпаки закриваємо доступ для конкретної IP-адреси 123.123.123.123:

deny from 123.123.123.123

Обмеження доступу до конкретного файлу, в прикладі файл cron.php:

<Files "cron.php">
deny fromm 123.123.123.123
</Files>

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

Крок 3 – Перенаправлення 301

Перенаправлення 301 з головної сторінки сайту на URL http://your_site.ua можна зробити таким чином. В цьому прикладі і наступних замість your_site.ua потрібно вказати ім’я вашого сайту або потрібний URL.

Redirect 301 / https://your_site.ua

Можна також використовувати це правило для будь-якої директорії сайту: для цього замість / вказуємо потрібну директорію, наприклад, /my_dir.

Redirect 301 /my_dir https://your_site.ua

Наступне правило використовується для перенаправлення всіх сторінок домену your_site.ua на відповідні сторінки іншого домену your_new_site.ua. Дане правило потрібно додати в .htaccess сайту, зі сторінок якого повинен бути редирект, в прикладі це your_site.ua:

RewriteCond %{HTTP_HOST} ^www\.your_site\.ua$ [NC]
RewriteRule ^(.*)$ http://your_new_site.ua/$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^your_site\.ua$ [NC]
RewriteRule ^(.*)$ http://your_new_site.ua/$1 [L,R=301]

За аналогією з попереднім правилом можна зробити переспрямування з усіх сторінок www.your_site.ua на такі ж сторінки your_site.ua, тобто це редирект з www на без www:

RewriteCond %{HTTP_HOST} ^www.(.*)$
RewriteRule ^(.*)$ https://%1/$1 [L,R=301]

І навпаки, з без www на таку ж сторінку з www:

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [L,NE,R=301]

Це правило допоможе позбутися від .html в кінці URL сторінки:

RewriteCond %{THE_REQUEST} /([^.]+)\.html [NC]
RewriteRule ^ /%1 [NC,L,R=301]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_URI}.html [NC,L]

Ще можна прибрати / в кінці URL:

RewriteEngine on
RewriteRule (.+)/$ /$1 [L,R=301]

Або додати / в кінці URL, який не закінчуються на /:

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]

Крок 4 – Кодування сайту

У .htaccess також можна примусово встановити кодування для сайту використовуючи директиву AddDefaultCharset і передаючи їй один параметр – бажане кодування, наприклад:

AddDefaultCharset UTF-8

або

AddDefaultCharset WINDOWS-1251

Або можна відключити установку кодування web-сервером використовуючи директиву:

CharsetDisable on

Крок 5 – Перепризначення сторінок помилок

Ці правила замінять стандартні сторінки помилок на зазначені користувацькі. Посилання http://your_site.ua/error_page_404.html та інші потрібно замінити на ваші посилання сторінок помилок:

ErrorDocument 404 https://your_site.ua/error_page_404.html
ErrorDocument 403 https://your_site.ua/error_page_403.html
ErrorDocument 500 https://your_site.ua/error_page_500.html

Крок 6 – Встановлення нестандартного індексного файлу

При відкритті будь-якого веб-сайту сервер шукає в кореневій папці індексний файл, який за замовчуванням заданий як index.php або index.html. У разі, якщо наш індексний файл відрізняється від заданих за замовчуванням, і називається, наприклад, main.php, ми можемо це вказати в .htaccess директивою:

DirectoryIndex main.php

Висновок

У даній статті розглянуті приклади найбільш використовуваних правил .htaccess, які будуть корисні як і досвідченому розробнику, так і новачкові в цій сфері. Але це далеко не всі можливості конфігурації в .htaccess. Сьогодні використання файлу .htaccess не є великою проблемою, оскільки практично всі хостинги в своєму програмному забезпеченні використовують Apache і підтримують можливість налаштування за допомогою .htaccess. Тому ця тема вже багато років залишається актуальною і інформацію про це легко можна знайти на багатьох інтернет ресурсах. Якщо виникає завдання що-небудь налаштувати за допомогою .htaccess – швидше за все це вже хтось робив, – і можна просто знайти готове рішення. Якщо ж реалізувати потрібну опцію .htaccess вам не вдалося, звертайтеся в нашу підтримку і ми знайдемо рішення разом.

Telegram Hostpro

Наш телеграм

з важливими анонсами, розіграшами й мемами

Приєднатися

Можливо, вас зацікавить

Причини виникнення помилки 502. Як її виправити?

Причини виникнення помилки 502. Як її виправити?

Помилки 5хх означають проблеми на боці сервера. Якщо говорити конкретно про помилку 502, то...

Ruslan Holovatiuk | Оновлено: 30.10.2024

Причини виникнення помилки 403. Як виправити?

Причини виникнення помилки 403. Як виправити?

Для більшості користувачів інтернету не надто принципово, чому вони не можуть потрапити на сайт....

Ruslan Holovatiuk | Оновлено: 23.10.2024

Причини виникнення помилки 508. Як виправити?

Причини виникнення помилки 508. Як виправити?

Якщо коротко, помилка 508: Resource Limit Is Reached зазвичай означає, що ваш обліковий запис...

Ruslan Holovatiuk | Оновлено: 15.10.2024

Як вставити картинку в HTML й оптимізувати її для кращого ранжування в Google

Як вставити картинку в HTML й оптимізувати її для кращого ранжування в Google

Погодьтеся, візуальні ефекти відіграють важливу роль у створенні привабливого та функціонального інтерфейсу. Тож у...

Diana Honcharenko | Оновлено: 26.09.2024