Редиректы в .htaccess

Универсальный редирект с WWW на не WWW


Options +FollowSymLinks
#RewriteEngine on (Если до этого по коду не включено)
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

Редирект на HTTPS (SSL)

#RewriteEngine on (Если до этого по коду не включено)
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://SITE-NAME.ru/$1 [R=301,L]
#RewriteEngine on (Если до этого по коду не включено)
RewriteCond %{ENV:HTTPS} !on 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Редирект с HTTPS на HTTP

#RewriteEngine on (Если до этого по коду не включено)
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Простой 301 редирект

#RewriteEngine on (Если до этого по коду не включено)
RewriteRule ^zashhita-avtomobilya.html	/okleyka-avtomobilya.html [R=301,L]

Редирект с одного домена на другой


#RewriteEngine on (Если до этого по коду не включено)
RewriteCond %{HTTP_HOST} ^site1.ru
RewriteRule ^(.*)$ http://site2.ru/$1 [R=permanent,L]

Удалить index.php везде, в том числе из директорий

#RewriteEngine on (Если до этого по коду не включено)
RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)index.php $1 [R=301,L]

Редирект с index.php и index.html

#RewriteEngine on (Если до этого по коду не включено)
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ https://SITE-NAME.ru/ [R=301,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ https://SITE-NAME.ru/ [R=301,L]

Редирект на нижный регистр

# force url to lowercase if upper case is found
RewriteCond %{REQUEST_URI} [A-Z]
# ensure it is not a file on the drive first
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule (.*) rewrite-strtolower.php?rewrite-strtolower-url=$1 [QSA,L]

//файл rewrite-strtolower.php
if(isset($_GET['rewrite-strtolower-url'])) {
    $url = $_GET['rewrite-strtolower-url'];
    unset($_GET['rewrite-strtolower-url']);
    $params = http_build_query($_GET);
    if(strlen($params)) {
        $params = '?' . $params;
    }
    header('Location: http://' . $_SERVER['HTTP_HOST'] . '/' . strtolower($url) . $params, true, 301);
    exit;
}
header("HTTP/1.0 404 Not Found");
die('Unable to convert the URL to lowercase. You must supply a URL to work upon.');

Удалить слеш в конце адреса

#Со слешом на без слеша
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ /$1 [R=301,L]

Добавить слеш в конце

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]

Плагин для избавления от двойного слеша (MODX Revo)

Взято отсюда - https://proverstka.com.ua/

switch ($modx->event->name){
case 'OnWebPageInit':
  if (stristr($_SERVER['REQUEST_URI'], '//')){
    $g = preg_replace("|[//\s]+|is", "/", $_SERVER['REQUEST_URI']);
    $modx->sendRedirect($g);
  }
  break;
}

Комментарии (0)

  1. Напишите первый комментарий
*Комментарий будет опубликован после проверки модератором

Похожие статьи

Наш сайт использует куки, нажмите «ОК» если вы не против
OK