Как сделать редирект множества страниц?

(Ответов: 10, Просмотров: 2998)
Страница 1 из 2 12 Последняя
  1. Новичок
    • Регистрация: 09.02.2012
    • Сообщений: 29
    • Репутация: 6
    Доброго времени суток.
    подскажите пожалуйста. Появилась необходимость сделать редирект с части страниц одного сайта на страницы другого сайта.
    К примеру есть страницы:
    domen1/cgi-bin/page.cgi?category=1&id=1
    domen1/cgi-bin/page.cgi?category=2&id=2
    domen1/cgi-bin/page.cgi?category=3&id=3
    и таких страниц штук 200
    а редирект нужен такие страницы:
    domen2/page.php?id=1
    domen2/page.php?id=2
    domen2/page.php?id=3

    id страницы не совпадают на двух сайтах. Я конечно могу 200 редиректов указать в htaccess но боюсь на пользу это не пойдет.
    в perl не разбираюсь.

    Может быть можно к примеру через файл domen1/index.php проверять по списку страницы для редиректа и при совпадении делать редирект.
    Сейчас редиректы делаю через javascript, а хотелось чтобы был статус 301 для робота.
    Заранее спасибо.
    • 0
  2. Дипломник
    • Регистрация: 15.07.2013
    • Сообщений: 189
    • Репутация: 43
    • Webmoney BL: ?
    200 редиректов указать в htaccess
    Редиректы поддерживают шаблоны, например,

    ([0-9]+)
    ([0-9a-zA-Z]+)

    и т.д.

    Так что все ваши 200 редиректов вполне могут уместиться в одну строчку (если, конечно, допускают шаблонизацию)

    Ну а другой вариант - обрабатывать уже внутри самого скрипта и делать редирект (как вы и написали).
    • 0
  3. Дипломник Аватар для forekko
    • Регистрация: 08.01.2014
    • Сообщений: 146
    • Репутация: 7
    а чем плохо 200 редиректов в .htaccess, будет тормозить?
    Не получится ведь с шаблонизацией, ТС говорит что цифры не совпадают, адреса, выходит, совершенно разные.
    У меня когда джумла глючила с категориями, после исправления ссылок через БД (правил категории) приходилось делать до 80 редиректов, так как в индекс попали кривые ссылки (дубликаты), не стал заморачиваться с rel="canonical"
    • 0
  4. Новичок
    • Регистрация: 09.02.2012
    • Сообщений: 29
    • Репутация: 6
    forekko,
    Когда пытался найти ответ в интернете там была запись что апач будет жутко тормозить если много редиректов в htaccess.

    может есть какой нибудь готовый скрипт для редиректа множества страниц?
    • 0
  5. Опытный Аватар для temass
    • Регистрация: 24.11.2010
    • Сообщений: 277
    • Репутация: 49
    а ты попробуй будет тормозить или нет, мне кажется 200 это не много
    • 0
  6. Дипломник Аватар для proGoodWin
    • Регистрация: 04.09.2013
    • Сообщений: 128
    • Репутация: 15
    • Webmoney BL: ?
    После переноса с Joomla на WordPress куча ссылок слетела. Делал редирект 301 через htaccess - все ок.
    • 0
  7. Новичок
    • Регистрация: 09.02.2012
    • Сообщений: 29
    • Репутация: 6
    proGoodWin, куча это сколько? трафа много?
    • 0
  8. Дипломник
    • Регистрация: 15.07.2013
    • Сообщений: 189
    • Репутация: 43
    • Webmoney BL: ?
    Цитата Сообщение от forekko Посмотреть сообщение
    а чем плохо 200 редиректов в .htaccess, будет тормозить?
    Хороший вопрос. Однозначно не могу ответить. Но лично я стараюсь минимизировать обработку в htaccess . Все-таки не забываем, что он сканируется при каждом запросе к сайту.

    В идеале, надо бы провести моделирование и посмотреть, что произойдет с нагрузкой. И если увеличится, то насколько.
    • 1

    Спасибо сказали:

    WebMario(03.02.2014),
  9. Новичок
    • Регистрация: 09.02.2012
    • Сообщений: 29
    • Репутация: 6
    Попробую постепенно добавлять ссылки и отслеживать нагрузку.
    Попытался сделать редирект так:
    RewriteEngine On
    Redirect 301 /cgi-bin/page.cgi?category=1&id=1 domen2/page.php?id=1
    но он не работает. Как я понял с переменными нельзя указывать ссылку. Подскажите как сделать редирект в таком случае?

    ---------- Сообщение добавлено 10:20 ---------- Предыдущее 09:21 ----------

    Попробовал так:

    RewriteEngine on
    RewriteBase /
    RewriteCond %{QUERY_STRING} ^category=1&id=1$ [NC]
    RewriteRule ^page.cgi$ хттп://domen2/page.php?id=1 [R=301,L]

    тоже не работает. вылезает 404 ошибка.
    • 0
  10. Дипломник Аватар для nikolay1519
    • Регистрация: 11.08.2013
    • Сообщений: 104
    • Репутация: 19
    • Webmoney BL: ?
    Так, все что после ? припаяется к index.php
    PHP код:
    RewriteEngine On
    RewriteBase 
    /
    RewriteCond %{QUERY_STRINGcategory=[0-9]*&id=[0-9]{1,4} [NC]
    RewriteRule ^cgi-bin/page.cgihttp://csvparsing.ru/index.php [R=301,QSA,L] 
    А так, только id перебросит
    PHP код:
    RewriteEngine On
    RewriteBase 
    /
    RewriteCond %{QUERY_STRINGcategory=[0-9]*&id=([0-9]{1,4}) [NC]
    RewriteRule ^cgi-bin/page.cgihttp://csvparsing.ru/index.php?id=%1 [R=301,L] 
    При 500+ редиректов в .htaccess - сайт будет работать без тормозов. Кстати, для "Redirect 301 url1 url2" - ModRewrite не нужен, он просто сравнивает строки.

    Если у вас точка входа на сайт одна, можете php редирект организовать, но это не будет быстрее чем через .htaccess
    Последний раз редактировалось nikolay1519; 03.02.2014 в 20:21.
    • 1

    Спасибо сказали:

    WebMario(05.02.2014),
Страница 1 из 2 12 Последняя

Похожие темы

Темы Раздел Ответов Последний пост
Редирект 301 для нескольких страниц
Вопросы от новичков 1 16.07.2013 00:21
Как сделать редирект 301 со страниц со старым ЧПУ на новый ?
DLE 8 06.01.2013 17:01
Редирект для страниц записей
WordPress 1 21.09.2012 00:55
Как правильно сделать редирект внутренних страниц?
Web программирование 16 22.03.2012 15:58
Как правильно сделать редирект внутренних страниц?
Вопросы от новичков 3 17.03.2012 15:33

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры