Универсальный .htaccess для всех 301 редиректов сразу — http на https, www на без www и т.д.

Чисто памятка для универсального .htaccess для всех редиректов сразу — http на https, www на без www, со слешем, без слеша, с поддоменов одного домена на поддомены другого и т.д.

Используется на на сайтах на Битриксе, в целом, должен работать и на любых других.

Options -Indexes 
ErrorDocument 404 /404.php


RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]

#ROBOTS.TXT
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{REQUEST_URI} !robots.txt
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]

#DOMAIN AND SUBDOMAIN REDIRECTION
RewriteBase /

RewriteCond %{HTTP_HOST} !^(www\.)?old-site\.ru$
RewriteCond %{HTTP_HOST} ^(.+)\.old-site\.ru$
RewriteRule (.*) https://%1.new-site.ru/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^old-site.ru$ [NC]
RewriteRule ^(.*)$ https://new-site.ru/$1 [R=301,L]


RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]

#one-to-301-wo-www-and-slash

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

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

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


#RewriteCond %{HTTPS} =off
#RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]


  php_flag session.use_trans_sid off
  #php_flag default_charset UTF-8
  #php_value display_errors 1



  php_flag session.use_trans_sid off
  php_flag default_charset UTF-8

  #php_value display_errors 1



  Options +FollowSymLinks
  RewriteEngine On
  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}]



  DirectoryIndex index.php index.html



  ExpiresActive on
  ExpiresByType image/jpeg "access plus 3 day"
  ExpiresByType image/gif "access plus 3 day"
  ExpiresByType image/png "access plus 3 day"
  ExpiresByType text/css "access plus 3 day"
  ExpiresByType application/javascript "access plus 3 day"

Убрать index.php (при .html — заменить .php в записи) в конце адреса

# remove index.php from the end of URI
RewriteEngine On
RewriteRule ^index\.php$ / [R=301,L]
RewriteRule ^(.*)/index\.php$ /$1/ [R=301,L]

Редирект GET параметров

Например, сделать редирект со страницы /?act=page&id=2 на /page-2/

RewriteCond %{QUERY_STRING} act=page [NC]
RewriteCond %{QUERY_STRING} id=(\d+) [NC]
RewriteRule .* /page/%1/? [R=301,L]]

Как убрать все get запросы htaccess redirect

Бывает необходимо убрать все GET запросы/параметры из url, т.к на сайте они не используются, а поисковики пытаются индексировать страницы с этими параметрами и отмечают их как дубли.Для того, чтобы убрать GET параметры со всего сайта и сделать 301 редирект на ту же страницу но без параметров необходимо использовать следующую конструкцию:RewriteCond %{QUERY_STRING} ^(.+) [NC]
RewriteRule ^(.*)$ /$1? [R=301,L]

Настройка таких редиректов бывает необходимо после заражения сайта вирусами, когда идет очень много обращений к страницам файла с GET запросами.

Однако если административная панель сайта использует GET запросы, необходимо исключить из этой конструкции папку административной панели сайта, и переделать ее в следующий вид:

RewriteCond %{REQUEST_URI} !^/admin/
RewriteCond %{QUERY_STRING} ^(.+) [NC]
RewriteRule ^(.*)$ /$1? [R=301,L]

Please follow and like us:

Оставьте комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Открыть чат
1
Попробуйте написать нам в WhatsApp!
Попробуйте написать нам в WhatsApp!