Проблема с перенаправлением PHP с субдоменом

Я использую PHP для перенаправления страницы на предыдущую страницу со следующим:

header("Location: {$_SERVER['HTTP_REFERER']}"); 

Этот набор страниц будет использоваться только внутренними пользователями, поэтому меня не очень беспокоит тот факт, что референт не всегда будет доступен.

Проблема, с которой я столкнулся, заключается в том, что если реферист выглядит как http://subdomain.domain.com/test.php?id=13 , перенаправление заканчивается на http://subdomain.domain.com/.domain.com/test.php?id=13 . Обратите внимание на дополнительный .domain.com/ в URL- .domain.com/ .

Я проверил hardcoding значение, и это также вызывает проблему. Похоже, что phpMyAdmin страдает той же проблемой, но только на этом конкретном сервере.

Если это не вопрос, пожалуйста, двигайтесь соответствующим образом.

EDIT : на @yaggo

test.php содержит только header("Location: http://subdomain.domain.com/test2.php");

 curl --head --referer 'http://subdomain.domain.com/' 'http://subdomain.domain.com/test.php' HTTP/1.1 302 Found Server: nginx/0.7.64 Date: Fri, 02 Apr 2010 17:21:45 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive X-Powered-By: PHP/5.2.12-pl0-gentoo Location: .domain.com/test2.php 

Кажется, что ваша конфигурация nginx вызывает проблемы.

Его вполне возможно, что nginx модифицирует заголовки ответов. Это не по умолчанию – у вас может быть конфигурация, предназначенная для того, чтобы вести себя как обратный прокси-сервер и т. Д.

Вы пробовали тестировать перенаправление на nginx с настройкой по умолчанию?

Я воссоздал обе программы на моем сервере один раз с

 header("Location: http://subdomain.domain.com/some/place"); 

и один раз с

 header("Location: {$_SERVER['HTTP_REFERER']}"); 

и оба дают результат corret

 curl --head --referer 'http://subdomain.domain.com/some/place' 'http://subdomain.domain.com/test.php' HTTP/1.1 302 Found Date: Fri, 02 Apr 2010 17:48:54 GMT Server: Apache/2.0.52 (Red Hat) X-Powered-By: PHP/5.1.2 Location: http://subdomain.domain.com/some/place Connection: close Content-Type: text/html 

Я использую другую версию PHP и другой веб-сервер, поэтому есть две вещи для исследования.

[…] перенаправление заканчивается в http://subdomain.domain.com/.domain.com/test.php?id=13 .

Можете ли вы изолировать проблему немного больше? Является ли этот url именно тем, что возвращается PHP, или как он видит браузер (Chrome?)?

Можете ли вы проверить фактические заголовки, например, с помощью curl:

 $ curl --head --referer 'http://your-referer' 'http://your-page/' 

header("Location: ".$_SERVER['HTTP_REFERER']);

Отредактировано:

Проверьте настройки .htaccess или если решение не найдено, вы можете использовать preg_replace, чтобы удалить последний «.domain.com»,

но похоже, что это не ошибка php.

ИЛИ используйте javascript для получения адреса рефератора … затем используйте window.location.href = url; перенаправить …