HybridAuth на поддоменах
Здравствуйте.
При использовании HybridAuth на поддомене возникла следующая проблема. При логине через любой соц. сервис сайт редиректился на тот же адрес, но уже основного домена. Долго дебажил код самого HybridAuth и оказалось этот адрес он получает так:
В принципе данная проблема решается через установку в nginx
Поддомены у сервера устанавливаются так:
При использовании 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;
Как правильно решить такую проблему? Комментарии: 1
По моему, нормальное решение.
Менять исходники библиотеки однозначно не хорошо.
Менять исходники библиотеки однозначно не хорошо.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.