X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> 301 редирект [полное руководство]
r0mZet
r0mZet
Topic Starter сообщение 28.1.2016, 22:32; Ответить: r0mZet
Сообщение #1


Собраны варианты 301 редиректа на все случаи жизни. Если кто может дополнить список, вэлкам.

 

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

 



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


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



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


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



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


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



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


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



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


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



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


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



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]


Если несколько последовательных слэшей в конце:



RewriteCond %{THE_REQUEST} // 
# Проверяем, повторяется ли слеш (//) более двух раз. 
RewriteRule .* /$0 [R=301,L] 
# Исключаем все лишние слеши.


 

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



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]


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



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]


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



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]


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



RewriteCond %{REQUEST_URI} /index.php
RewriteCond %{QUERY_STRING} ^\z
RewriteRule ^(.*)$ http://site.ru/? [R=301,L]


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

 

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

 



RewriteCond %{REQUEST_URI} /index.php
RewriteRule ^(.*)$ http://site.ru/ [R=301,L]


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

 

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

 



RewriteCond %{QUERY_STRING} ^id=229
RewriteRule ^.*$ /supermodel/? [R=301,L]


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

 



RewriteCond %{REQUEST_URI} /test/
RewriteCond %{QUERY_STRING} ^id=229
RewriteRule ^.*$ /supermodel/? [R=301,L]


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

 



RewriteCond %{REQUEST_URI} (.*)
RewriteRule ^(.*)$ http://site.ru/ [L,R=301]


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

 



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


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

 



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


Обратный редирект. Исключаем использование защищенного протокола не отключая его физически на хостинге.

 

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

 



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


Другие варианты редиректа с протокола http на https.




Сообщение отредактировал r0mZet - 20.3.2020, 14:04
Причина редактирования: подправил пояснения
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ShowPrint
ShowPrint
сообщение 29.1.2016, 0:16; Ответить: ShowPrint
Сообщение #2


Еще хорошая подборка вот здесь:

http://blogerator(точка)ru/page/fajl-primery-htaccess-redirekt-dostup

Вот здесь куча полезной инфы по апачу:

http://www.egoroff.spb(точка)ru/portfolio/

А вот это сам изобретал, поэтому наверняка "кривенько"...

RewriteCond %{QUERY_STRING} !^$
RewriteCond %{QUERY_STRING} !^(.*)(id=|num=|video=|text=)(.*)$
RewriteRule (.*) $1? [L,R=301]

Сия хрень проверяет get-параметры, если они есть и не из списка "одобренных" (id,num,video,text), то 301-редирект на морду без параметров...
Пусть и кривенько, но пока работает...  <_<


Сообщение отредактировал ShowPrint - 29.1.2016, 0:17
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
miketomlin
miketomlin
сообщение 29.1.2016, 16:53; Ответить: miketomlin
Сообщение #3


Насчет "кривенько" не знаю, но не очень красивенько. Зачем "равно" нужно было дублировать?


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ShowPrint
ShowPrint
сообщение 29.1.2016, 18:46; Ответить: ShowPrint
Сообщение #4


miketomlin, скопировал как стоит и как работает. Более чем уверен что можно написать и грамотнее и менее ресурсо-затратно, но...
Я - ламер, с апачем "на Вы и с глубоким поклоном", каждый кто "на ты" - может сделать красиво...

Изобретал как мог, поделился больше как "в качестве идеи", вдруг кому пригодится, или наведет на мысли...  B)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
miketomlin
miketomlin
сообщение 29.1.2016, 19:47; Ответить: miketomlin
Сообщение #5


Я понял. Для меня ваше "кривенько" прозвучало, как призыв поумничать. Кстати, помимо "равно" эту строчку можно еще упростить.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ShowPrint
ShowPrint
сообщение 29.1.2016, 19:54; Ответить: ShowPrint
Сообщение #6


(miketomlin @ 29.1.2016, 21:47) *
помимо "равно" эту строчку можно еще упростить
 Ни капли не сомневаюсь, а "кривенько" - это был не "призыв", а скромность...

Собственно если есть опыт сделать правило универсальным и "красивым", то чем умничать - поправили бы и написали, чтоб народ не моей "кривизной" пользовался, а красивым правилом  ;)

Я-то писал, чтоб "мало-ли кому пригодится"... Когда мне надо было - в инете не нашел и пришлось "вычеркнуть" ночь из жизни на "глубокое проникновение в апач"...

Причем до сих пор так и не понял: то ли "я его", то ли "он меня"... ну это самое... проникнул...  :D
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
HITMAN84
HITMAN84
сообщение 28.1.2018, 12:55; Ответить: HITMAN84
Сообщение #7


Какой должен быть редирект для домена на новый домен, далее чтоб с Чпу 2 пошел на Чпу 1
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Naizmene
Naizmene
сообщение 30.1.2018, 1:15; Ответить: Naizmene
Сообщение #8


Здравствуйте прописал вот такие редиректы 

RewriteEngine On

RewriteCond %{SERVER_PORT} !^443$

RewriteCond %{REQUEST_URI} !^/robots.txt

RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

 

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www.1000-melohey.ru$ [NC]

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

 

 

в robots.txt

 


User-Agent: *

Disallow: /blok

Disallow: /user/

Disallow: /admin/

Disallow: /pages/viget.php

Disallow: /pages/obr.php

Disallow: /404.php

Host: 1000-melohey.ru


 

теперь яндекс считает домен склеянным не подскажете в чем ошибка ?



Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


Сообщение отредактировал Naizmene - 30.1.2018, 1:17
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) 301 редирект по маске. Как сделать?
1 Vbifyz 1265 16.8.2020, 13:45
автор: miketomlin
Открытая тема (нет новых ответов) CRYPTOLIDE.com - P2P сервис! Покупай и продавай Bitcoin "из рук в руки"! Полное отсутствие комиссии!
Сервис, в котором люди продают и покупают друг у друга криптовалюту
4 Mixbarter 3882 16.5.2018, 20:02
автор: EvilGomel
Открытая тема (нет новых ответов) SEO-Гуру 2018 - новое руководство от Dr.Max
Все секреты мобильного, регионального продвижения
0 AnnaYa 3864 26.4.2018, 17:09
автор: AnnaYa
Открытая тема (нет новых ответов) Автоматический редирект сервис.
0 smtp3ru 2123 18.2.2018, 1:17
автор: -smtp3ru-
Открытая тема (нет новых ответов) Вышло руководство SEO-Монстр 2018! Временно со скидкой
1 AnnaYa 3672 26.12.2017, 16:06
автор: Silverspam


 



RSS Текстовая версия Сейчас: 28.3.2024, 22:22
Дизайн