Закрытие домена, 301 редирект

H
На сайте с 01.12.2015
Offline
0
499

Здравствуйте!

Собственно, сразу к делу.

Существует 2 копии сайта (практически идентичные) на двух разных доменах. Было принято решение о закрытии одного из доменов, с пометкой, что страницы закрывающегося сайта (domen1) из серпа должны вести на страницы остающегося сайта (domen2).

Адреса страниц на доменах не совпадают, но содержание идентичное.

Для закрывающегося сайта был составлен htaccess следующего содержания:

Options +FollowSymlinks

RewriteEngine on
AddDefaultCharset Off
<IfModule mod_rewrite.c>
Redirect 301 / http://www.domen2.com
Redirect 301 /?i=stranica1 http://www.domen2.com/stranica-nomer-odin/
</IfModule>

В результате главная страница переехала как положено, а второй уровень переехал с ошибками. Вместо переадресации на необходимую страницу перебрасывает в корень, а в адресе к корню добавляется старый адрес (http://www.domen2.com/?i=stranica1).

Пожалуйста, помогите разобраться.

J
На сайте с 20.02.2014
Offline
120
jkm
#1

Директивы Redirect и RedirectMatch модуля mod_alias здесь не подойдут.

Средствами mod_rewrite это можно сделать так


RewriteCond %{QUERY_STRING} ^i=stranica1$
RewriteRule ^$ http://www.domen2.com/stranica-nomer-odin/? [R=301,L]

Или так


RewriteCond %{THE_REQUEST} " /\?i=stranica1 "
RewriteRule ^ http://www.domen2.com/stranica-nomer-odin/? [R=301,L]

Еще один вариант. Допустим нужны такие редиректы

/?foo => http://www.domen2.com/page1/

/?bar => http://www.domen2.com/page2/

/?lol => http://www.domen2.com/page3/

Реализовать можно так


RewriteCond %{THE_REQUEST} " (\S+) "
RewriteCond "%1 \
/?foo => /page1/ \
/?bar => /page2/ \
/?lol => /page3/ \
" "^(\S++).*? \1 => (\S+)"
RewriteRule ^ http://www.domen2.com%2? [R=301,L]
H
На сайте с 01.12.2015
Offline
0
#2

jkm, огромное спасибо!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий