- $new_location_info = (!array_key_exists('redirect_url', $this->info) ? '' : @parse_url($this->info['redirect_url']));
- $old_location_info = (!array_key_exists('url', $this->info) ? '' : @parse_url($this->info['url']));
-
- $this->redirectUrl = $new_location_info;
-
- if (empty($new_location_info['path']) && !empty($new_location_info['host'])) {
- $this->redirectUrl = $new_location_info['scheme'] . '://' . $new_location_info['host'] . $old_location_info['path'];
+ $redirect_parts = parse_url($this->info['redirect_url']);
+ if (preg_match('/(Location:|URI:)(.*?)\n/i', $this->header, $matches)) {
+ $redirect_parts = array_merge($redirect_parts, parse_url(trim(array_pop($matches))));