file_url_transform_relative($file_url)
Transforms an absolute URL of a local file to a relative URL.
May be useful to prevent problems on multisite set-ups and prevent mixed content errors when using HTTPS + HTTP.
Parameters
string $file_url: A file URL of a local file as generated by file_create_url().
Return value
string If the file URL indeed pointed to a local file and was indeed absolute, then the transformed, relative URL to the local file. Otherwise: the original value of $file_url.
See also
Related topics
- File interface
- Common file handling functions.
File
- core/includes/file.inc, line 250
- API for handling file uploads and server file management.
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | function file_url_transform_relative( $file_url ) { // Unfortunately, we pretty much have to duplicate Symfony's // Request::getHttpHost() method because Request::getPort() may return NULL // instead of a port number. $request = \Drupal::request(); $host = $request ->getHost(); $scheme = $request ->getScheme(); $port = $request ->getPort() ? : 80; if (( 'http' == $scheme && $port == 80) || ( 'https' == $scheme && $port == 443)) { $http_host = $host ; } else { $http_host = $host . ':' . $port ; } return preg_replace( '|^https?://' . $http_host . '|' , '' , $file_url ); } |
Please login to continue.