Сделал редирект на другой сайт. Но пропадает часть URL ???

Тема в разделе "Mod Rewrite / htaccess / ЧПУ", создана пользователем Красавчег, 4 июл 2012.

  1. Красавчег

    Красавчег Завсегдатай

    Регистр.:
    15 мар 2010
    Сообщения:
    902
    Симпатии:
    300
    У news2.ru все ссылки на другие источники имеют вид:
    Код:
    http://news2.ru/redirect.php?url=http%3A%2F%2Fwww.regnum.ru%2Fnews%2F1533321.html
    Перейти по ссылке

    Мне нужно было сделать редирект со своего сайта вот на такой урл. Добавил в .htaccess следующее:
    Код:
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^my1page.html http://news2.ru/redirect.php?url=http\%3A\%2F\%2Fwww.regnum.ru\%2Fnews\%2F1533321.html [R=301,L]
    </IfModule>
    
    То есть, мне нужно было чтобы редиректило на:
    Код:
    http://news2.ru/redirect.php?url=http%3A%2F%2Fwww.regnum.ru%2Fnews%2F1533321.html
    А получается, что меня редиректит на:
    Код:
    http://news2.ru/http%3A%2F%2Fwww.regnum.ru%2Fnews%2F1533321.html
    То есть из урла исчезает "redirect.php?url=" Что за мистика такая? Как поправить?
     
  2. ShaDeRzz

    ShaDeRzz

    Регистр.:
    16 окт 2007
    Сообщения:
    176
    Симпатии:
    65
    Кажется в htaccess не учитываются параметры, идущие рядом с вопросительным знаком. Для обхода этой проблемы нужно юзать {QUERY_STRING}, но могу ошибаться.
    У вас статичный редирект? Ну тоесть постоянно редиректится на одну и ту же страницу на удалённом домене? Или всё-таки редирект надо делать в зависимости от исходного адреса?
     
  3. Красавчег

    Красавчег Завсегдатай

    Регистр.:
    15 мар 2010
    Сообщения:
    902
    Симпатии:
    300
    ShaDeRzz, не совсем понимаю, что значит "статичный редирект"

    Мне нужно, чтобы при открытии конкретно страницы my1page.html на моем сайте, происходил редирект конкретно на урл:
    Код:
    http://news2.ru/redirect.php?url=http%3A%2F%2Fwww.regnum.ru%2Fnews%2F1533321.html
     
  4. ShaDeRzz

    ShaDeRzz

    Регистр.:
    16 окт 2007
    Сообщения:
    176
    Симпатии:
    65
    Статичный - я имел ввиду, что редирект будет один, а динамичный - это когда в зависимости от страницы - редиректы на разные урлы... как-то так...
    В вашем случае не увидел ничего подозрительного, кроме отсутствия символа окончания условия - $ и наличия символов % которые в Rewrite Rule обычно используются для подстановки значений.
    может быть так получится?:

    Код:
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^my1page.html$ http://news2.ru/redirect.php?url=http://www.regnum.ru/news/1533321.html[R=301,L]
    </IfModule>
     
    Красавчег нравится это.
  5. Красавчег

    Красавчег Завсегдатай

    Регистр.:
    15 мар 2010
    Сообщения:
    902
    Симпатии:
    300
    Так-то получается, но мне нужно чтобы редирект шел именно на:
    Код:
    http://news2.ru/redirect.php?url=http%3A%2F%2Fwww.regnum.ru%2Fnews%2F1533321.html
    Символы % я экранирую обратным слешем и это работает. Но часть урла пропадает и причина проблемы так и не найдена.
     
  6. xoxmo

    xoxmo Постоялец

    Регистр.:
    24 мар 2008
    Сообщения:
    143
    Симпатии:
    86
    часть урл никуда не пропадает, "redirect.php?url=" вырезается уже на стороне news2.ru.
    чтобы убедиться в этом, вот напишем такой код в хтаксесс и зайдем на страницу my2page.html:
    Код:
    RewriteEngine On
    RewriteRule ^my2page.html http://news2222222.ru/redirect.php?url=http\%3A\%2F\%2Fwww.regnum.ru\%2Fnews\%2F1533321.html [R=301,L]
    
    то есть редиректим не на ньюс2ру, а на несуществующий ньюс2222222ру, чтобы ничего не вырезалось.

    получаем редирект на
    Код:
    http://news2222222.ru/redirect.php?url=http%253A%252F%252Fwww.regnum.ru%252Fnews%252F1533321.html
    это не решение, просто как направление куда копать.
     
    Красавчег нравится это.