logo помогаю бизнесу зарабатывать больше.
Связаться
Введите название услуги:

Настройка редиректов в htaccess

4 апреля 2023 в 16:08 Блог веб-разработчика

Файл .htaccess (hypertext access) – это файл конфигурации, используемый веб-сервером Apache для изменения настроек веб-сайта. Вот примеры правил редиректа, которые можно использовать в файле .htaccess:

Как сделать SEO редиректы на www или без него, добавление/удаление расширений у страниц.

Мой рабочий файл для html сайтов

#включаем редирект с www на без www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ https://%1/$1 [L,R=301] 

#включаем редирект https
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

#удаляем редирект index.php 
RewriteCond %{THE_REQUEST} ^.*/index.php 
RewriteRule (.*) https://%{HTTP_HOST} [R=301,L]

#удаляем редирект index.html 
RewriteCond %{THE_REQUEST} ^.*/index.html 
RewriteRule (.*) https://%{HTTP_HOST} [R=301,L]

#удаляем повторные слешы
RewriteEngine On
RewriteCond %{THE_REQUEST} ([^\s]*)\/{2,}(\?[^\s]*)?
RewriteRule (.*) https://%{HTTP_HOST} [R=301,L]

 

Добавить www

Для http:

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

Для https:

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

Удалить www

Для http:

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

Для https:

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

Добавление слеша в конец URL

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

Иногда не работает с кириллическими доменами, возможен еще вариант:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !\.xml
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://xn--80aswg.xn--p1ai/$1/ [L,R=301]

# Для https:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !\.xml
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://xn--80aswg.xn--p1ai/$1/ [L,R=301]

Удаление слеша в конце URL

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

Удаление повторяющихся слешей

Если нужно убрать несколько слешей, например https://example.com/sections///////// или https://example.com/////////sections/.

RewriteCond %{THE_REQUEST} ([^\s]*)\/{2,}(\?[^\s]*)?
RewriteRule (.*) %1 [R=301,L]

Редирект с index.php

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

Редирект с index.html

RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule (.*) http://%{HTTP_HOST} [R=301,L]

Для https:

RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule (.*) https://%{HTTP_HOST} [R=301,L]

Редирект .htm на .html

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

Замена .html на слеш

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

Если расширение не .html то 404

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.html$
RewriteRule ^(.*)$ index.php?route=404 [L,QSA]

Редирект с одного домена на другой

Если к сайту привязаны несколько доменов, то следует сделать 301-й редирект на основной (например example.com на example.ru):

RewriteEngine On
RewriteCond %{HTTP_HOST} example.com
RewriteRule ^(.*)$ https://example.ru/$1 [R=301,L]

Похожие статьи

Оставить заявку
По любым вопросам пишите мне в мессенджеры .
Написать в WhatsApp
+7 (925) 444-48-89
Написать в Telegram
@max_webs
Ваша цена
Предложите свою цена за товар или услугу. Пишите мне в мессенджеры или оставьте заявку в данной форме.
Написать в WhatsApp
+7 (925) 444-48-89
Написать в Telegram
@max_webs
[contact-form-7 id="22192" title="Универсальная форма"]
[contact-form-7 id="114828" title="Рассчитать стоимость"]

Представительство Max-Webs в других городах:

There are no products