PDA

Просмотр полной версии : Php переадресация


Mixon
04.04.2010, 18:42
Как возможно средствами пхп (возможно 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 запрос к определенному файлу,из всего потока,остальные переадресовать куда и шли.

Blackcat95
04.04.2010, 20:28
.htaccess
redirect /in/go/index.php?sr=gi http://site2.ru/in/go/index.php?sr=gi

Mixon
04.04.2010, 21:01
1. нужен абсолютный путь,т.е. весь path и query меняеться каждый раз
2. не подходит он,потому как сервер выдает ответ на переадресацию,а не уже готовый ответ

svesve
04.04.2010, 21:05
Тебе нужно чтобы адрес в адресой строке не изменялся но содержимое шло из site2.ru???

Mixon
05.04.2010, 15:52
какой адресной строке?
я уже не однократно упоминаю,этот запрос НЕ от браузера!
К примеру такой запрос в ПХП можно получить так file_get_contents('http://...../ss/s.zip');
или через курл,или как либо по другому.
Сдесь браузер не причём!

Mixon
06.04.2010, 17:42
Ну так что? никто не знает что-ли?

undef
06.04.2010, 23:19
курл, пхп и прочие отлично воспринимают http-редиректы в хидерах.
можешь не заморачиваться и использовать header("Location: ...");

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

capslock
09.04.2010, 17:31
Я честно говоря не совсем понял, что топикстартер хотел, но могу предложить варианты:

Вариант 1
<?php $s = $_GET['s']; $a = "Location: http://www."; $as = $a.$s; header("$as"); exit; ?>

Вариант 2
<? $s = $_GET['s']; $a = "location: http://www."; $as = $a.$s; // Включаем буферизацию ob_start(); echo "Вывод в браузер"; header($as); // Вывод в браузер и сброс буфера ob_end_flush(); ?>

Вариант 3
<?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
<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>