Редирект можна налаштувати різними способами: в панелі управління хостингом, через код HTML, через PHP, за допомогою web.config, через .htaccess, а також іншими способами. Розглянемо, в чому особливість редиректу через.htaccess і як налаштувати 301-й .htaccess-редирект з однієї сторінки на іншу.
- В яких випадках підійде .htaccess-редирект
- Для чого потрібен 301-й редирект
- Як зробити редирект через .htaccess
- 301 редирект з одного домену на інший
- 301 редирект з домену з WWW на домен без WWW
- 301 редирект з домену без WWW на домен з WWW
- 301 редирект для окремого IP
- 301 редирект з https: / / на http://
- 301 редирект з http: / / на https: / / для Linux
- варіант 1
- варіант 2
- варіант 3
- варіант 4
- Перенаправлення на https тільки обраної сторінки
- варіант 1
- варіант 2
- Перенаправлення на https всіх сторінок, крім однієї
- 301 редирект з GET-параметрами
- 301 редирект з масовим склеюванням
- Редирект з піддомену
В яких випадках підійде .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 і зможете налаштувати його по нашій інструкції.