Sospecho que la condición del if siempre es evaluada como true, entonces entras en un bucle infinito de redirecciones, lo que genera el error de que las redirecciones excedieron el número máximo permitido. La variable $_SERVER['HTTP_REFERER'] es "seteada" por el cliente, no debe ser fuente de información confiable, no la uses.
Según la documentación de php, si usas apache esto puede funcionar:
Código PHP:
if ( !isset($_SERVER['HTTPS']) || strtolower($_SERVER['HTTPS']) != 'on' ) {
header ('Location: https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
exit();
}
saludos