Постраничный редирект для разных доменов

123
footballstar
На сайте с 20.07.2010
Offline
94
#11
ivan-lev:
положить туда, где старый домен

так старый домен доступен тольк по ip адресу, это ведь значит что его как такового нет в сети?

или я путаю?

IL
На сайте с 20.04.2007
Offline
435
#12
footballstar:
так старый домен доступен тольк по ip адресу, это ведь значит что его как такового нет в сети?

Старый сайт доступен по IP адресу..

А домен доступен кхм кхм.. по имени домена.. видимо, на новом сервере (или не доступен, но может стать доступным - сайт пустышка ещё не создавался, видимо)...

Hippos:
Старый домен site.kh.ua перенесли на нейм сервера нового хостинга. Старый сайт остался доступен только по ip адресу. Теперь можно создать сайт-пустышку, на который бы указывал site.kh.ua, но как мне это помогает

p.s. всё не так уж сложно.. Если, конечно, табличку сопоставлений подготовить... да и она сама по себе не сложная, но может времени потребовать.

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
[Удален]
#13
ivan-lev:
или не доступен

Тады эта трактуеццо: профукали где-то и на кой тады нужон .htaccess ... ))

IL
На сайте с 20.04.2007
Offline
435
#14
Pavel_:
Тады эта трактуеццо
ivan-lev:
или не доступен, но может стать доступным

Выборочная слепота? Или банальная невнимательность? Или...

2 Pavel_: В этом топике некоторые комментарии на "часть" сообщения, при этом другая часть, оставленная "без комментариев" (и, видимо, без внимания) собственно и содержит ответ либо пояснение..

[Удален]
#15
ivan-lev:
В этом топике некоторые комментарии на "часть" сообщения, при этом другая часть, оставленная "без комментариев" (и, видимо, без внимания) собственно и содержит ответ либо пояснение..

Дык мы из колхозу... Красный флаг шоль вывешивайте над сельсоветом - тады будеть явно понятно...

А то пойдёшь к Тёте Соне за горилкой... а там - засада... ))

siv1987
На сайте с 02.04.2009
Offline
427
#16
Pavel_:
Задача то элементарная.
1. Тупо редиректим http://site.kh.ua на http://site.com.ua
2. Тупо редиректим http://site.com.ua/index.php?param1=1¶m2=2 на http://site.com.ua/1-param1-2-param2 Возможно даже шаблоны можно насочинять, если ещё подумать... ))

Что мешает тогда тупо редиректить http://site.kh.ua/index.php?param1=1¶m2=2 => http://site.com.ua/1-param1-2-param2

[Удален]
#17
siv1987:
Что мешает тогда тупо редиректить

сложность контролировать ошибки сачинений - традиция такая... ))

а глобально - ничего

H
На сайте с 18.03.2013
Offline
3
#18

Хм, какая-то Санта-Барбара началась... 🍿

Собственно, проблема решилась. Изложу еще раз на всякий случай для особо непонятливых.

В задаче дано:

1. Существовал сайт site.kh.ua на хостинге №1. CMS этого сайта генерила ссылки в виде site.kh.ua/index.php?param1=1&param2=2. Старенькая была CMS, еще 2009 года :)

2. Создали новый сайт site.com.ua на хостинге №2 такой же структуры, как и site.kh.ua. CMS этого сайта генерит ссылки в виде site.com.ua/1-param1-2-param2

3. Доменное имя site.kh.ua было перенесено на нейм сервера хостинга №2 и там в панели управления хостинга был сделан прямой редирект с site.kh.ua на site.com.ua. Я думаю это делается это средствами сервера.

4. На хостинге №1 старый сайт полностью сохранился, но так как доменное имя было перенесено, то он стал доступен только по ip адресу. Наверно, не надо было переносить доменное имя, но что поделать, накуролесили :o Назад вернуть не получится.

Внимание, суть проблемы!. Все старые ссылки с site.kh.ua перебрасываются на главную страницу site.com.ua. То есть, в адресной строке задаем site.kh.ua/index.php?param1=1&param2=2, а редиректит тупо на site.com.ua, а не на новую страницу site.com.ua/1-param1-2-param2

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

Старых ссылок реально не так уж и много, всего около 100. Остальными можно принебречь.

Для решения пришлось снять прямой редирект с site.kh.ua на site.com.ua. И создать сайт пустышку, просто пустую директорию для site.kh.ua.

Решение 1

---------- Добавлено 20.03.2013 в 07:41 ----------

Hippos, делается одним файликом .htaccess (положить туда, где старый домен) вида

RewriteEngine on
RewriteRule ^old-url http://new.site.ru/new-url [R=301,L]
RewriteRule ^old-url-1 http://new.site.ru/new-url-1 [R=301,L]
...
# всё, что не прописано - кидаем на главную
RewriteRule .* http://new.site.ru/ [R=301,L]

Адреса только сопоставьте, что и куда.. перенаправлять...

ivan-lev, спасибо, подтолкнули к решению №1.

Не совсем так, как Вы написали, потому что в старых ссылках есть параметры. А с ними так не работает. Вот таким макаром


RewriteEngine on

RewriteCond %{QUERY_STRING} param1=1
RewriteRule ^(.*)$ http://site.com.ua/1-param1? [R=301,L]

RewriteCond %{QUERY_STRING} param1=2
RewriteRule ^(.*)$ http://site.com.ua/2-param1? [R=301,L]

#остальные адреса по аналогии

#и да, всё, что не прописано - кидаем на главную
RewriteRule .* http://site.com.ua/ [R=301,L]

Я только не знаю, как задать AND условие для 2 параметров. У меня то работает так, потому что первый параметр param1 однозначно идентифицирует страницу, а второй param2, просто транслит названия страницы и ни на что не влияет. Но, наверно бывают ситуации, когда нужно обрабатывать оба параметра.

---------- Добавлено 20.03.2013 в 08:10 ----------

Решение 2

Pavel_, спасибо, подтолкнули к решению №2

Pavel_:
Да подходит же !
Задача то элементарная.
1. Тупо редиректим http://site.kh.ua на http://site.com.ua
2. Тупо редиректим http://site.com.ua/index.php?param1=1¶m2=2 на http://site.com.ua/1-param1-2-param2 Возможно даже шаблоны можно насочинять, если ещё подумать... ))

В общем да, подходит, только опять же сайт-пустышку нужно создавать для site.kh.ua. И положить в корень index.php


//всё, что не прописано - кидаем на главную
if (!isset($_GET['param1']) AND !isset($_GET['param2']) )
{
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://site.com.ua");
exit();
}

if($_GET['param1'] == 1)
{
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://site.com.ua/1-param1");
exit();
}
else if($_GET['param1'] == 2)
{
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://site.com.ua/2-param1");
exit();
}
else
{
//и снова на главную
}

В этом варианте, можно сколько угодно параметров анализировать :)

Не знаю какой вариант лучше, я выбрала первый. Скажите мне какой лучше?

IL
На сайте с 20.04.2007
Offline
435
#19
Hippos:
Не знаю какой вариант лучше, я выбрала первый. Скажите мне какой лучше?


<?php
$mapping = array(
'/index.php?param1=1&param2=2'=>'/1-param1-2-param2',
'/index.php?param1=2&param2=3'=>'/3-param1-2-param2',
// ...
);
if (isset ($mapping[$_SERVER['REQUEST_URI']])) {
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://site.com.ua".$mapping[$_SERVER['REQUEST_URI']]);
exit();
}

Собственно, решение из неподходящего поста

[Удален]
#20
Hippos:
только опять же сайт-пустышку нужно создавать для site.kh.ua. И положить в корень index.php

Неее, - сайт-пустышку создавать не обязательно (и даже не нужно)... ))

123

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