Redirect на сайте

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Сборник редиректов для htaccess и php.

Redirect на PHP


if($_SERVER[HTTP_HOST] !== 'site.ru'){
  header('Location: https://site.ru'.$_SERVER[REQUEST_URI],true, 301);
  exit;
}

Данный кусок ставится в начале скрипта, как правило в index.php

Идет проверка, если хост не равен site.ru то перекид на хост site.ru и выход.

Убираем /index.php

редирект с site.ru/index.php на site.ru

Запись в .htaccess


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

для битрикса

лично проверял, в моем случае работало нормально, убирает index.php не только с главной но и с внутренних страниц


RewriteCond %{THE_REQUEST} /(.*)index.php.*$
RewriteCond %{THE_REQUEST} !bitrix/admin/
RewriteRule .* /%1 [R=301,L]

Убираем .php на конце урла

Запись в .htaccess


<IfModule mod_rewrite.c>

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

</IfModule>

В результате урл /oslozhneniya-posle-operatsii.php преобразуется к виду /oslozhneniya-posle-operatsii

Редирект с www на версию без www


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

На Modx (MODX Revolution 2.7.1-pl), данный редирект уже есть в файле .htaccess но только закомментирован


# Rewrite www.example.com -> example.com -- used with SEO Strict URLs plugin
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} ^www.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

Убираем повторяющиеся слеши в конце урла


RewriteCond %{THE_REQUEST} //
# Проверяем, повторяется ли слеш (//) более двух раз.
RewriteCond %{QUERY_STRING} !http(s|)://
# Убедимся что это не урл в GET
RewriteRule .* /$0 [R=301,L]
# Исключаем все лишние слеши.

преобразование урла

до: /my-site.org/9maya-pilotki-optom///

после: /my-site.org/9maya-pilotki-optom/

Для битрикса, да и скорей всего для других cms, данное условие надо ставить перед следующей конструкцией, иначе редирект для слешей сработает не верно


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *