Редирект через .htaccess

Редирект можна налаштувати різними способами: в панелі управління хостингом, через код HTML, через PHP, за допомогою web.config, через .htaccess, а також іншими способами. Розглянемо, в чому особливість редиректу через.htaccess і як налаштувати 301-й .htaccess-редирект з однієї сторінки на іншу.

В яких випадках підійде .htaccess-редирект

Щоб зрозуміти, для яких цілей краще підходить .htaccess-редирект, розберемося, що таке .htaccess.

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

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

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

Для чого потрібен 301-й редирект

Крім різних способів налаштування переадресації, існують різні види редиректів. Кожен з них має свою кодову назву. Основні види:

  • 300 – повідомляє, що за шуканим запитом можна перейти не на одну, а на кілька альтернативних сторінок;
  • 301 – постійний;
  • 302 – тимчасовий;
  • 303 – на схожу за тематикою сторінку;
  • 305 – відсилає до підключення через проксі-сервер.

Також існують 304-й, 306-й і 307-й редиректи. Однак зараз ці види практично ніхто не використовує. Один з найпопулярніших видів — це 301-й.

301-й редирект — Moved Permanently) – це постійний редирект. Використовується для переміщення сторінки на нову URL-адресу назовсім. Коли пошукові системи зустрічають сторінку з редиректом 301, вони «розуміють», що тепер необхідно індексувати нову сторінку, а стару можна повністю виключити з індексації. Якщо налаштувати переадресацію 301 некоректно, на сторінці буде відображатися помилка 404. Індексація сторінок з помилками призводить до зниження SEO-показників всього веб-ресурсу.

Як зробити редирект через .htaccess

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

Звернути увагу. Кириличні домени (в зоні .укр, тощо ) необхідно прописувати в коді в форматі Punycode.

301 редирект з одного домену на інший

У файл .htaccess, який знаходиться в папці сайту, з якого необхідно зробити переадресацію, додайте наступні рядки:

RewriteEngine On
RewriteCond %{HTTP_HOST} old-site.com.ua 
RewriteRule (.*) http://new-site.com.ua/$1 [R=301,L]

Де:

old-site.   – домен, з якого відбувається редирект;
new-site.   – домен, на який відбувається редирект.

301 редирект з домену з WWW на домен без WWW

Додайте в .htaccess наступні рядки:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.site.  $ [NC]
RewriteRule ^(.*)$ http://site.  /$1 [R=301,L]

Де site. – ім’я вашого домену.

301 редирект з домену без WWW на домен з WWW

Додайте в .htaccess наступні рядки:

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

Де site. – ім’я вашого домену.

301 редирект для окремого IP

Додайте в .htaccess наступні рядки:

RewriteEngine On
RewriteCond %{REMOTE_ADDR} 123.123.123.123
RewriteRule ^(.*)$ http://site. [R=301,L]

Де site.ru – ім’я вашого домену.

301 редирект з https: / / на http://

Додайте в .htaccess наступні рядки:

RewriteEngine On
RewriteCond %{SERVER_PORT} ^443$ [OR]
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ http://site.  /$1 [R=301,L]

Де site. – ім’я вашого домену.

301 редирект з http: / / на https: / / для Linux

Додайте в .htaccess код з потрібного вам прикладу нижче:

Для всіх сторінок з http: / / на https://

Для всіх сторінок з http: / / на https://, в тому числі і з http://www на https://

варіант 1

RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

Якщо перший варіант не допоможе, скористайтеся другим варіантом:

варіант 2

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

Якщо всі варіанти не допомогли і виникає циклічна переадресація:

варіант 3

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

варіант 4

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

Перенаправлення на https тільки обраної сторінки

У прикладах нижче переадресація налаштовується для сторінки login.php.

варіант 1

RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} =/login.php
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]

або

варіант 2

RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} =/login.php
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

Перенаправлення на https всіх сторінок, крім однієї

У прикладі нижче редирект налаштовується для сторінки test.php.

RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} !^/test.php
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]

301 редирект з головної сторінки, крім інших сторінок сайту

У файл .htaccess, який знаходиться в папці сайту, з якого необхідно зробити переадресацію, додайте наступні рядки:

RewriteEngine On
RewriteRule ^$ https://site. [R=301,L]

301 редирект з GET-параметрами

Якщо вам необхідно зробити .htaccess редирект з get параметрами, вкажіть:

RewriteCond %{REQUEST_URI} /index.php
RewriteRule ^(.*)$ http://site.  / [R=301,L]

Де site.  – ім’я вашого домену.

301 редирект з масовим склеюванням

Якщо вам необхідно зробити .htaccess редирект на index php, введіть:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTP/
RewriteRule ^(.*)index\.(php|html|htm)$ http://site.  /$1 [R=301,L]

Де site.ru – ім’я вашого домену.

Редирект з піддомену

Створюэмо у папці субдомену файл .htaccess з кодом:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} subdomain.site.
RewriteRule (.*) https://site. /$1 [R=301,L]

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

Оцініть статтю
Додати коментар