Проблема PHP Redirect с поддоменом - PullRequest
3 голосов
/ 23 марта 2010

Я использую 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.

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

Если это не SO вопрос, пожалуйста, двигайтесь соответственно.

РЕДАКТИРОВАТЬ : за @ 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

Ответы [ 4 ]

2 голосов
/ 02 апреля 2010

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

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

и один раз с

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

и оба дают правильный результат

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 и другой веб-сервер, поэтому нужно исследовать две вещи.

1 голос
/ 07 апреля 2010

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

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

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

1 голос
/ 02 апреля 2010

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

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

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

$ curl --head --referer 'http://your-referer' 'http://your-page/'
0 голосов
/ 24 марта 2010

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

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

Проверьте настройки .htaccess или, если решение не найдено, вы можете использовать preg_replace для удаления этого последнего ".domain.com"

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...