Сборник редиректов для 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}]