Четверг, 25 Май 2017 18:05

Редирект через htaccess

Оцените материал
(1 Голосовать)

Правила переадресаций

  1. 301 редирект с одной страницы на другую

Самый простой вариант

1

Redirect 301 /test-1/ http://site.ru/test-2/

Более подробный

1

2

RewriteCond %{REQUEST_URI} ^/test/$

RewriteRule ^.*$ http://site.ru/new-test/? [R=301,L]

  1. 301 редирект с www на без www (главное зеркало – домен без www)

1

2

RewriteCond %{HTTP_HOST} ^www\.(.*)$

RewriteRule ^(.*)$ http://%1/$1 [L,R=301]

  1. 301 редирект с без www на www (главное зеркало – домен с www)

1

2

RewriteCond %{HTTP_HOST} ^([^www].*)$

RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]

  1. 301 редирект со страниц со слешем на без слеша (весь сайт)

1

2

3

4

5

6

RewriteCond %{REQUEST_URI} !\?

RewriteCond %{REQUEST_URI} !\&

RewriteCond %{REQUEST_URI} !\=

RewriteCond %{REQUEST_URI} !\.

RewriteCond %{REQUEST_URI} ![^\/]$

RewriteRule ^(.*)\/$ /$1 [R=301,L]

  1. 301 редирект со страниц без слеша на слеш (часто в CMS системах устанавливается автоматически)

1

2

3

4

5

6

RewriteCond %{REQUEST_URI} !\?

RewriteCond %{REQUEST_URI} !\&

RewriteCond %{REQUEST_URI} !\=

RewriteCond %{REQUEST_URI} !\.

RewriteCond %{REQUEST_URI} !\/$

RewriteRule ^(.*[^\/])$ /$1/ [R=301,L]

  1. Один (а не два последовательных!) 301 редирект на без www и с слешем на конце адреса страницы

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

RewriteCond %{REQUEST_URI} !\?

RewriteCond %{REQUEST_URI} !\&

RewriteCond %{REQUEST_URI} !\=

RewriteCond %{REQUEST_URI} !\.

RewriteCond %{REQUEST_URI} !\/$

RewriteCond %{HTTP_HOST} ^www\.(.*)$

RewriteRule ^(.*)$ http://%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 ^(.*)$ http://%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 ^(.*)$ http://%1/$1/ [L,R=301]

  1. Один (а не два последовательных!) 301 редирект на c www и со слешем на конце адреса страницы

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

RewriteCond %{REQUEST_URI} !\?

RewriteCond %{REQUEST_URI} !\&

RewriteCond %{REQUEST_URI} !\=

RewriteCond %{REQUEST_URI} !\.

RewriteCond %{REQUEST_URI} !\/$

RewriteCond %{HTTP_HOST} ^www\.(.*)$

RewriteRule ^(.*)$ http://www.%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 ^(.*)$ http://www.%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 ^(.*)$ http://www.%1/$1 [L,R=301]

  1. Один (а не два последовательных!) 301 редирект на c www и без слеша на конце адреса страницы

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

RewriteCond %{REQUEST_URI} ^\/$

RewriteCond %{HTTP_HOST} ^([^www].*)$

RewriteRule ^(.*)$ http://www.%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 ^(.*)\/$ http://www.%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 ^(.*)$ http://www.%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 ^(.*)\/$ http://www.%1/$1 [L,R=301]

  1. Один (а не два последовательных!) 301 редирект на без www и без слеша на конце адреса страницы

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

RewriteCond %{REQUEST_URI} ^\/$

RewriteCond %{HTTP_HOST} ^www\.(.*)$

RewriteRule ^(.*)$ http://%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 ^(.*)\/$ http://%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 ^(.*)$ http://%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 ^(.*)\/$ http://%1/$1 [L,R=301]

  1. 301 редирект только адреса site.ru/index.php (без GET параметров) на основное зеркало site.ru

1

2

3

RewriteCond %{REQUEST_URI} /index.php

RewriteCond %{QUERY_STRING} ^\z

RewriteRule ^(.*)$ http://site.ru/? [R=301,L]

  1. 301 редирект всех адресов с index.php и GET параметрами на страницы только с GET параметрами (вырезать в url index.php)

Пример: типа site.ru/index.php?n=1 на site.ru/?n=1

1

2

RewriteCond %{REQUEST_URI} /index.php

RewriteRule ^(.*)$ http://site.ru/ [R=301,L]

  1. 301 редирект для index.php в Joomla (массовая склейка)

1

2

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/

RewriteRule ^index\.php$ http://dikom-neva.ru/$1 [R=301,L]

  1. 301 редирект url с GET параметрами (динамический URL) на статический

1 вариант (простой адрес с GET параметром)

1

2

RewriteCond %{QUERY_STRING} ^id=229

RewriteRule ^.*$ /supermodel/? [R=301,L]

2 вариант (со страницы и GET параметром)

1

2

3

RewriteCond %{REQUEST_URI} /test/

RewriteCond %{QUERY_STRING} ^id=229

RewriteRule ^.*$ /supermodel/? [R=301,L]

  1. Все страницы одного домена на главную страницу другого домена

1

2

RewriteCond %{REQUEST_URI} (.*)

RewriteRule ^(.*)$ http://site.ru/ [L,R=301]

  1. Каждая страница одного домена на такой же адрес другого url

1

2

RewriteCond %{REQUEST_URI} (.*)

RewriteRule ^(.*)$ http://site.ru/$1 [L,R=301]

  1. Редирект с протокола http на https.

1

2

RewriteCond %{HTTPS} !=on

RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Если возникает циклический редирект, то воспользуйтесь этим вариантом:

1

2

3

RewriteCond %{HTTPS} off

RewriteCond %{HTTP:X-Forwarded-Proto} !https

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

  1. Редирект с протокола https на http.

Обратный редирект, если перестали использовать SSL сертификат.

1

2

RewriteCond %{HTTPS} =on

RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

 

Прочитано 2369 раз Последнее изменение Четверг, 25 Май 2017 18:05
Другие материалы в этой категории: « Как настроить и отслеживать страницу "не найдено"?

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

Убедитесь, что вы вводите (*) необходимую информацию, где нужно
HTML-коды запрещены