2016-06-02 2 views
0

У меня есть сайт в реальном времени, и я хочу перенаправить страницу на мой текущий компьютер, над которым я работаю. Я попытался следующиеPHP перенаправление на localhost

header('HTTP/1.1 307 Temporary Redirect'); 
header('Location: http://localhost/dev/test.php'); 

Перенаправление НЕ должно быть сделано для локального хоста в реальном времени сервера, но на моей локальной машине настоящее время я использую для разработки. Это просто проверка платежного шлюза, который я добавил на свой сайт (для шлюза оплаты требуется действительный URL-адрес для перенаправления, поэтому я не могу использовать localhost).

Платежный шлюз будет перенаправлять

http://www.example.com/test.php 

, которые затем должны быть перенаправлены на моей текущей машине:

http://localhost/dev/test.php 

Если PHP не может справиться с этим, я могу сделать это с апача переадресовывает? Я также хочу отправить все параметры GET и POST, полученные на реальном сервере, на мою локальную страницу.

+1

Вопрос неясен ... Конечно, вы можете отправить заголовок перенаправления клиенту. Зарезервированное имя хоста 'localhost' всегда разрешается _client_, а не сервером, поэтому оно указывает на клиентскую систему. Весь поток неясно, так что я не уверен, что это помогает ... – arkascha

+0

Любой живой сервер CANT получает доступ к вашей локальной машине .. Я бы также добавил ЛЮБЫЕ СРЕДСТВА .. Это просто невозможно .. Локальный хост - это просто сервер, который работает в вашей системе .. и что не будет доступным для любой из живых систем – Sanchit

+0

, если вы не дадите ipaddress? – bhansa

ответ

1

Вам не нужно отправить HTTP 1.1 заголовок и это может быть то, что предотвращение перенаправления от работы. Ваш веб-сервер добавит это автоматически, потому что ему необходимо отправить код состояния. Вместо этого, пройти 307 статус заголовка() 's третий параметр:

header('location: http://localhost/some/url', true, 307); 

редирект заголовки разобранную вашим браузером, так что „локальный“ будет та же машина ваш браузер работает на.

Чтобы передать все параметры GET, вы могли бы добавить $_SERVER['QUERY_STRING'] к URL:

header('location: http://localhost/some/url?' . $_SERVER['QUERY_STRING'], true, 307); 

параметры POST являются более сложными. Вам нужно будет создать собственный URL, объединив все из массива $ _POST. Обязательно введите urlencode() значения.

$redirect_url = 'http://localhost/some/url?'; 
foreach($_POST as $key => $value){ 
    $redirect_url .= $key . '=' . urlencode($value) . '&'; 
} 
header('location: ' . $redirect_url, true, 307); 

И помните, что вы можете перенаправить запрос POST только как GET. Но если вы просто строите макет для тестирования интеграции шлюза, все должно быть хорошо.

0

Нельзя использовать localhost, так как он всегда разрешается клиентской машиной.

header('Location: http://localhost/dev/test.php'); 

Заменить Localhost вашим доменным именем сервера, как это:

header('Location: http://yourliveserver.com/dev/test.php'); 
+0

Нет, я не хочу перенаправлять на мой живой сервер, но на свою локальную машину. – goocreations

+0

Вы хотите, чтобы вы перенаправляли страницу с вашего сайта на свой локальный компьютер? Затем используйте IP-адрес вашей локальной сети – chin

+0

Да, вот что я имею в виду. Я не могу использовать свой собственный IP-адрес, поскольку мой маршрутизатор слишком дрянной, чтобы обрабатывать DMZ и локальное разрешение. – goocreations

Смежные вопросы