Различные правила редиректа через .htaccess



Простое перенаправление с одного сайта на другой:

Redirect 301 / https://куда_перенаправляем.pw/
Результат перенаправления:


Редирект с https на http:

RewriteCond %{HTTP:X-Forwarded-Proto} =https
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}
Результат перенаправления:


Редирект с http на https

SetEnv HTTPS on # <-для устранения ошибки «Сайт выполнил переадресацию слишком много раз»
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Настройка редиректа в Wordpress: blog.cishost.ru/2021/11/10/nastroyka-redirekta-s-http-na-https-v-wordpress.html

Результат перенаправления:


В случае необходимости перенаправления всегда на главную в условиях https

RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^.*= [NC]
RewriteRule (.*) $1? [R=301,L]

RewriteCond %{HTTP_HOST} откуда.cc$ [NC]
RewriteRule ^(.*)$ https://куда.pw/ [R=301,L]
Результат перенаправления:


В случае необходимости перенаправления всегда на главную в условиях http

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^1kkom.ru$ [NC]
RewriteRule ^(.*)$ http://www.agrosadovod.ru/ [R=301,L]
</IfModule>
Результат перенаправления:


С определённой страницы одного сайта на определённую страницу другого
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/old/address/$
RewriteRule ^.*$ http://сайт.com/new/address/? [R=301,L]
Результат перенаправления:


Редирект c без www на с www в условиях https

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

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^сайт.ru 
RewriteRule ^(.*)$ https://www.сайт.ru/$1 [R=301,L]

Редирект c www на без www в условиях https
# Вариант1:
SetEnv HTTPS on
RewriteEngine On

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

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

## Вариант2:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R,L]
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

### Вариант3 (для Joomla):
RewriteEngine On

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

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

#### Вариант4
SetEnv HTTPS on
RewriteEngine On
#RewriteCond %{HTTPS} off
#RewriteCond %{HTTP:X-Forwarded-Proto} !https
#RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTP_HOST} !^сайт\.ru$ [NC]
RewriteRule ^(.*)$ https://сайт.ru/$1 [R=301,L]

##### Вариант5 (с 301-ми ответами от сервера):

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

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

Удаление index.html в конце пути
#Включаем механизм преобразования
RewriteEngine On
#убрать index.html из URL для главной страницы
RewriteRule ^index\.html$ / [R=301,L]
#убрать index.html из URL для всех страниц
RewriteRule ^(.*)/index\.html$ /$1/ [R=301,L]

Удаление index.php в конце пути
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L,QSA]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)/index\.php [NC]
RewriteRule ^index\.php$ https://сайт.ru/phpBB3/ [R=301,L]

Удаление расширения .php
RewriteEngine On
RewriteRule login login.php [L]


Касаемо SEO. Если сайт был добавлен в поисковики с указанием обычного http, а теперь у Вас https, чтобы поисковики переиндексировали сайт с https в robots.txt в директиве hosts нужно указать домен с https. Строка:
Host: https://www.домен.ru

Нет комментариев