HybridAuth на поддоменах

Здравствуйте.
При использовании HybridAuth на поддомене возникла следующая проблема. При логине через любой соц. сервис сайт редиректился на тот же адрес, но уже основного домена. Долго дебажил код самого HybridAuth и оказалось этот адрес он получает так:
public static function getCurrentUrl( $request_uri = true ) 
	{
		if(
			isset( $_SERVER['HTTPS'] ) &&
 ( $_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1 )
		|| 	isset( $_SERVER['HTTP_X_FORWARDED_PROTO']) && 
$_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'
		){
			$protocol = 'https://';
		}
		else {
			$protocol = 'http://';
		}

		$url = $protocol . $_SERVER['SERVER_NAME'];

		// use port if non default
		$url .= 
			isset( $_SERVER['SERVER_PORT'] ) 
			&&( ($protocol === 'http://' && $_SERVER['SERVER_PORT'] != 80) ||
 ($protocol === 'https://' && $_SERVER['SERVER_PORT'] != 443) )
			? ':' . $_SERVER['SERVER_PORT'] 
			: '';
		if( $request_uri ){
			$url .= $_SERVER['REQUEST_URI'];
		}
		else{
			$url .= $_SERVER['PHP_SELF'];
		}
        
        

		// return current url
		return $url;
	}
В моем случае он возвращал $_SERVER['SERVER_NAME'], а он оказался равен именно домену, а не поддомену.

В принципе данная проблема решается через установку в nginx
fastcgi_param	SERVER_NAME		$http_host;
но кажется это как-то неправильно…
Поддомены у сервера устанавливаются так:
server_name         domen.ru *.domen.ru;
set $proot "/var/www/domen.ru";
    if ( $host ~* ^((.*).domen.ru)$ ) {
        set $proot /var/www/$1;
        break;
	}
    root $proot;
Как правильно решить такую проблему?
Виталий Киреев
04 февраля 2013, 07:15
modx.pro
1 140
0

Комментарии: 1

Василий Наумкин
04 февраля 2013, 12:26
0
По моему, нормальное решение.

Менять исходники библиотеки однозначно не хорошо.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1