Проблема автоматической переадресации на адрес iissite-XXXXX-YYYYY.in-solve.hidden

Материал из 1GbWiki.

Версия от 12:26, 20 ноября 2009; Dmih (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Суть проблемы заключается в том, что скрипт некорректно использует в своей работе переменные веб-сервера пытаясь выполнить переадресацию на переменную server name (имя сервера). При этом важно понимать, что указанная переменная не обязана содержать host name и факт использования переменной таким образом – ошибка разработчиков скрипта.

[править] Общий вид

Что бы решить проблему в общем случае – вам нужно методом отладки найти в проблемном скрипте участок кода в котором скрипт получает такой адрес для переадресации и заменить этот участок кода на получение правильной переменной, например - $_SERVER["HTTP_HOST"].

[править] Gallery 2

Ниже описано исправление такой ситуации на примере скриптов Gallery 2 версии 1.19

Описанная ситуация возникает из-за некорректного получения переменной $baseUri по умолчанию в случае отсутствия явного указания значения этой переменной в конфигурационном файле. Решается двумя способами:

  1. Явно указать правильное значение в конфигурационном файле. В файле config.php есть строчка "$gallery->setConfig('baseUri', );". Вам нужно вписать вторым параметром в функцию URL галереи, например - "$gallery->setConfig('baseUri', 'http://photo.farewell.ru');"
  2. Исправить метод получения значения переменной $baseUri по умолчанию. В файле /modules/core/classes/GalleryUrlGenerator.class находим следующий код:
   if (empty($this->_host[$forceDirect])) {
   if (!isset($defaultHost) &&
       !($defaultHost = GalleryUtilities::getServerVar('HTTP_X_FORWARDED_SERVER'))) {
       $defaultHost = GalleryUtilities::getServerVar('HTTP_HOST');
   }
   $this->_host[$forceDirect] = $defaultHost;
   }

И заменяем его на следующий:

   if (empty($this->_host[$forceDirect])) {
   if (!isset($defaultHost))
   {
       $defaultHost = GalleryUtilities::getServerVar('HTTP_HOST');
   }
   $this->_host[$forceDirect] = $defaultHost;
   }
Личные инструменты