Інструкція для веб-майстрів: секрети налаштувань файлу .htaccess
Файл .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 вам не вдалося, звертайтеся в нашу підтримку і ми знайдемо рішення разом.
Можливо, вас зацікавить
Причини виникнення помилки 502. Як її виправити?
Помилки 5хх означають проблеми на боці сервера. Якщо говорити конкретно про помилку 502, то...
Оновлено: 30.10.2024
|Причини виникнення помилки 403. Як виправити?
Для більшості користувачів інтернету не надто принципово, чому вони не можуть потрапити на сайт....
Оновлено: 23.10.2024
|Причини виникнення помилки 508. Як виправити?
Якщо коротко, помилка 508: Resource Limit Is Reached зазвичай означає, що ваш обліковий запис...
Оновлено: 15.10.2024
|Як вставити картинку в HTML й оптимізувати її для кращого ранжування в Google
Погодьтеся, візуальні ефекти відіграють важливу роль у створенні привабливого та функціонального інтерфейсу. Тож у...
Оновлено: 26.09.2024
|
Наш телеграм
з важливими анонсами, розіграшами й мемами
Приєднатися