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

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

1

Для http:

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

Для https:

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

Для http:

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

Для https:

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

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

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]
htaccess
4
RewriteCond %{REQUEST_URI} ^(.*)/$
RewriteRule ^(.*)/$  /$1 [R=301,L]
htaccess
5

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

RewriteCond %{THE_REQUEST} ([^\s]*)\/{2,}(\?[^\s]*)?
RewriteRule (.*) %1 [R=301,L]
htaccess
6
RewriteCond %{THE_REQUEST} ^.*/index.php 
RewriteRule (.*) http://%{HTTP_HOST} [R=301,L]
htaccess

Для https:

RewriteCond %{THE_REQUEST} ^.*/index.php 
RewriteRule (.*) https://%{HTTP_HOST} [R=301,L]
htaccess
7
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} \.htm$
RewriteRule ^(.*)\.htm$ $1.html [R=301,L]
htaccess
8
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} \.html$
RewriteRule ^(.*)\.html$ $1/ [R=301,L]
htaccess
9
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.html$
RewriteRule ^(.*)$ index.php?route=404 [L,QSA]
htaccess
10

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

RewriteEngine On
RewriteCond %{HTTP_HOST} example.com
RewriteRule ^(.*)$ https://example.ru/$1 [R=301,L]
htaccess
01.11.2016, обновлено 02.04.2022
14398
Следующая запись Редирект с HTTP на HTTPS в htaccess

Комментарии

, чтобы добавить комментарий.

Другие публикации

Как сделать редирект PHP
На страницах сайтов постоянно что-то добавляется, удаляется и обновляется, чтобы в поисковиках была только актуальная информация и нужные страницы не выпадали из поиска применяются редиректы.
23172
+13
HTTP коды
Список основных кодов состояния HTTP, без WebDAV.
11371
+1
Переезд сайта на HTTPS
В последнее время вопрос переезда сайта с HTTP на HTTPS перешел из рекомендаций в необходимость, как со стороны поисковиков, так и браузеров.
4636
+1
Формирование файла sitemap.xml
Пример создания файла карты сайта (sitemap.xml) на PHP. Интеграция его на сайт и подключение его в robots.txt
23922
+3
Массив $_SERVER
Описание значений глобального массива $_SERVER с примерами.
51734
+3
Список MIME типов
Ниже приведён список MIME-заголовков и расширений файлов.
24639
+7