Php переадресация

Discussion in 'PHP' started by Mixon, 4 Apr 2010.

  1. Mixon

    Mixon Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    394
    Likes Received:
    119
    Reputations:
    12
    Как возможно средствами пхп (возможно htaccess,но врядли,потому как он возвращает результат на смену страницы,а не уже полученные данные) сделать переадресацию?
    Ситуация такая,запрашивается доступ к файлу по определённому адресу,а мне нужно из этого адреса переадресовать на другой адрес.
    Аналог подмены в файле hosts
    Пока лучшее что сделал по этому поводу,это по приходу запроса,скрипт сам качает данный файл,и выдает его через echo,но это занимает время,трафик,нагрузку и т.п.
    header не подходят в данном случае,это не страница браузера,это обращение к файлу....
    Пример запроса:
    http://site.ru/in/go/index.php?sr=gi

    Пример переадресации из этого адреса:

    http://site2.ru/in/go/index.php?sr=gi

    Все POST запросы и подобное должно тоже переадресоваться туда.
    В случае если htaccess то нужно чтобы по конкретному обрашению к одному файлу,передресация не происходила.
    В более кратком варианте,то что мне нужно: Нужно отпарсить 1 запрос к определенному файлу,из всего потока,остальные переадресовать куда и шли.
     
    #1 Mixon, 4 Apr 2010
    Last edited: 4 Apr 2010
  2. Blackcat95

    Blackcat95 Member

    Joined:
    11 Nov 2008
    Messages:
    20
    Likes Received:
    11
    Reputations:
    0
    .htaccess
    Code:
    redirect /in/go/index.php?sr=gi http://site2.ru/in/go/index.php?sr=gi
     
  3. Mixon

    Mixon Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    394
    Likes Received:
    119
    Reputations:
    12
    1. нужен абсолютный путь,т.е. весь path и query меняеться каждый раз
    2. не подходит он,потому как сервер выдает ответ на переадресацию,а не уже готовый ответ
     
  4. svesve

    svesve Elder - Старейшина

    Joined:
    15 Jun 2007
    Messages:
    574
    Likes Received:
    86
    Reputations:
    11
    Тебе нужно чтобы адрес в адресой строке не изменялся но содержимое шло из site2.ru???
     
  5. Mixon

    Mixon Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    394
    Likes Received:
    119
    Reputations:
    12
    какой адресной строке?
    я уже не однократно упоминаю,этот запрос НЕ от браузера!
    К примеру такой запрос в ПХП можно получить так file_get_contents('http://...../ss/s.zip');
    или через курл,или как либо по другому.
    Сдесь браузер не причём!
     
  6. Mixon

    Mixon Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    394
    Likes Received:
    119
    Reputations:
    12
    Ну так что? никто не знает что-ли?
     
  7. undef

    undef New Member

    Joined:
    23 Sep 2009
    Messages:
    19
    Likes Received:
    4
    Reputations:
    5
    курл, пхп и прочие отлично воспринимают http-редиректы в хидерах.
    можешь не заморачиваться и использовать header("Location: ...");

    то, что ты хочешь НЕВОЗМОЖНО без проксирования запросов.
    это нарушает основные концепции безопасности.
    ты не можешь не сообщая ничего клиенту заставить его отправить запрос на другой хост. а сообщить ему можно только посредством http-заголовков или например переадресации средставами javascript(в случае браузера в качествое юзер-агента)
     
  8. capslock

    capslock New Member

    Joined:
    25 Sep 2009
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Я честно говоря не совсем понял, что топикстартер хотел, но могу предложить варианты:

    Вариант 1
    PHP:
    <?php   $s $_GET['s'];  $a "Location: http://www."$as $a.$sheader("$as"); exit; ?>
    Вариант 2
    PHP:
    <?  $s $_GET['s'];  $a "location: http://www."$as $a.$s;   // Включаем буферизацию   ob_start();   echo "Вывод в браузер";   header($as);   // Вывод в браузер и сброс буфера   ob_end_flush(); ?> 
    Вариант 3
    PHP:
    <?php $s $_GET['s'];  echo ' <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>Новая страница 1</title> <script type="text/javascript"> location.replace("http://www.'; echo $s; echo '"); </script> </head> <body> </body> </html>'?>
    Вариант 4
    PHP:
    <html>  <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>Новая страница 1</title> <script type="text/javascript"location.replace("http://www.ya.ru"); </script> </head>  <body>  </body>  </html>