За умови правильного використання, конфігураційний файл web-сервера Apache – .htaccess (hypertext access) є дуже потужним засобом в арсеналі розробника сайту. Цей файл також важливий для СЕО оптимізації.
Що таке .htaccess і де він розміщений?
Файл .htaccess (англ. Hypertext access) використовується для простого і зручного налаштування веб-сервера на якому зберігається сайт. Змінюючи налаштування веб-сервера, ми зможемо змінити роботу сайту. Як правило, файл .htaccess розміщується в кореневому каталозі, а його дія поширюється на весь сайт і на всі підкаталоги. Якщо ж в іншому каталозі міститься свій .htaccess, то він буде діяти тільки на свій каталог і підкаталоги.
Змінюючи файл .htaccess можна сильно порушити роботу сайту. Непрофесійні та необдумані дії з цим файлом можуть не мати видимих наслідків, але спричинити за собою зниження позицій у пошукових системах, або повну їх втрату. Тому ми рекомендуємо перед будь-якими змінами файлу зберігати його копію, щоб мати можливість повернути колишні налаштування.
Редагувати файл на комп’ютері можна за допомогою будь-якого текстового редактора, але щоб уникнути можливих проблем з кодуванням ми рекомендуємо використовувати для цього Notepad ++.
Як перевірити чи працює .htaccess?
У першому рядку цього файлу напишість будь-яке слово (наприклад СЕО), збережіть файл і розмістіть на сервері. Якщо сайт продовжить працювати, то .htaccess в даний момент не працює. Якщо ж з’явиться помилка 500 Internal Server Error, то це означає, що веб-сервер не зміг зрозуміти команду (СЕО) і видав помилку. Цей факт підтвердить, що робота .htaccess на сервері підтримується та увімкнена на даний момент. Щоб повернути сайту працездатність видаліть рядок СЕО.
Якщо ви хочете, щоб ваш редирект працював, потрібно перед рядками, які рекомендуються нижче по тексту, обов’язково прописати RewriteEngine On.

Правильне налаштування файлу .htaccess
Розташовуйте переадресації сторінок у файлі від окремих до глобальних (зверху вниз). Наприклад: проста переадресація двох сторінок стоїть вище, ніж глобальне правило редиректів з www на без www.
Уникайте двох, трьох і т.д. послідовних редиректів. Правила повинні бути налаштовані так, що при виникненні редиректу він повинен перенаправляти користувача (робота) лише один раз. Кожна зайва переадресація – це секунди дорогоцінного часу видачі сторінки, це навантаження на сервер, це нечіткі команди для пошукових роботів. А це – втрата для СЕО.
Не забувайте, що багато браузерів кешують інформацію зі сторінок (запам’ятовують редтректи), тому перевіряти переадресації потрібно після очищення кешу.
Як налаштувати редирект з адреси на HTTP на HTTPS у файлі .htaccess
Якщо Ви встановили безпечний протокол для вашого сайту і тепер він доступний на HTTPS, є невідкладне завдання для покращення SEO. Оскільки ваш сайт доступний на двох адресах – і на HTTP, і на HTTPS, щоб пошукові системи не розцінили це як дублі, потрібно налаштувати редирект 301 на основну версію сайта.
#редирект з http на https
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
#Якщо виникає циклічний редирект, то використайте цей варіант:
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
301 Редирект з однієї сторінки на іншу (або сайт)
Для цього в файл .htaccess вносимо такі рядки:
seo friendly permanent redirect
Redirect 301 /page/ https://site.com/newpage/
seo friendly permanent redirect
RewriteCond %{REQUEST_URI} ^/page/$
RewriteRule ^.*$ https://site.com/newpage/? [R=301,L]
301 Редірект з www-сайту на сайт без www
редірект з адреси з www на без
RewriteCond %{HTTP_HOST} ^www.(.)$ RewriteRule ^(.)$ https://%1/$1 [L,R=301]
Як прибрати .html в кінці URL?
Зворотний редирект з site.com/page.html на site.com/page
видалити розширення html в урл сторінки
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+)$ $1.html [L,QSA]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /..html\ HTTP/ RewriteRule ^(.).html$ /$1 [R=301,L]
Як прибрати index.html в кінці URL?
redirect html pages to the root domain
RewriteRule ^index.html$ / [NC,R,L]
Як прибрати слеш в кінці URL?
301 редирект зі сторінок зі слешем на без слеша (весь сайт)
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !=
RewriteCond %{REQUEST_URI} !.
RewriteCond %{REQUEST_URI} ![^\/]$
RewriteRule ^(.*)\/$ /$1 [R=301,L]
301 редирект зі сторінок зі слешем на без слеша
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ /$1 [R=301,L]
301 Редирект при переїзді зі старого домену на новий
Наступне правило коректно перенаправляє відвідувачів з кожної конкретної сторінки старого сайту на таку ж сторінку на новому сайті. Наприклад зі сторінки oldsite.com/page на newsite.com/page.
редірект зі старого сайту на новий
RewriteCond %{HTTP_HOST} ^www.oldsite.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^test.oldsite.com$ [NC]
RewriteRule ^(.*)$ https://newsite.com/$1 [R=301,L]
Перенаправлення на власні сторінки у випадку помилок на сайті
ErrorDocument 401 /error/401
ErrorDocument 403 /error/403
ErrorDocument 404 /error/404
Блокування користувачів за адресою ІР
Втомилися від спам-коментарів або певного користувача? Просто заблокуйте його IP за допомогою наступного коду, який додається в .htaccess файл.
allow from all
deny from 123.456.789.000
Захист вразливих файлів
Нижченаведений код дозволяє вам заборонити доступ до будь-якого файлу – при запиті буде видаватися помилка 403. Для прикладу закриваємо доступ до самого файлу htaccess, підвищивши рівень безпеки сайту.
Захищаємо .htaccess файл
order allow,deny deny from all
Встановлення кешування файлів
Використання цього правила не означає пряме прискорення завантаження вашого сайту. Воно призначене для збільшення швидкості сайту для користувачів, які його вже відвідували. Це відбувається шляхом відправки статусу 304 для тих елементів на сайті, що не оновлювалися. Таким чином, при повторному завантаженні сторінки браузер відвідувача не буде заново завантажувати зображення, скрипти або CSS, а виведе ті файли, які вже зберігаються в його кеші. Ви можете змінити термін життя кеша, шляхом коригування його значення в роках (year), місяцях (month). У прикладі вказано 1 рік.

Стискання файлів для зменшення їхнього розміру
При використанні Gzip, сервер буде стискати файли перед їх відправленням користувачеві, завдяки чому ваш сайт буде завантажуватися швидше.
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/xml
Позбутися GET параметрів в URL сторінок
#301 редирект лише адреси site.com/index.php (без GET параметрів)
RewriteCond %{REQUEST_URI} /index.php
RewriteCond %{QUERY_STRING} ^\z
RewriteRule ^(.*)$ https://site.com/? [R=301,L]
#301 редирект всіх адрес с index.php і GET параметрами (видалити з url index.php)
RewriteCond %{REQUEST_URI} /index.php
RewriteRule ^(.*)$ https://site.com/ [R=301,L]
Список можливостей файлу .htaccess, наведений тут – не вичерпний. Не вагайтесь, щоб допомогти нам його доповнити. Якщо вам потрібна допомога в налаштуванні редиректів, кешування та збільшення швидкості для вашого сайту – пишіть нам через контактну форму.