Redirect на сайте

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

Redirect на PHP

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

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

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

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

RewriteCond %{SERVER_PORT} ^80$ [OR]
RewriteCond %{HTTP} =on
RewriteRule ^(.*)$ https://my-site.com/$1 [R=301,L]

Редирект с .html на страницу без .html на конце урла

RewriteEngine On
RewriteCond %{HTTP_HOST} ^my-site.com$ [NC]
RewriteRule ^([^.]+).html$ $1/ [R=301,L]

Убираем /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, данное условие надо ставить перед следующей конструкцией, иначе редирект для слешей сработает не верно

[code]

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}]

[/code]

Оцените статью
Добавить комментарий