function url[]{
if[isset[$_SERVER['HTTPS']]]{
$protocol = [$_SERVER['HTTPS'] && $_SERVER['HTTPS'] != "off"] ? "https" : "http";
}
else{
$protocol = 'http';
}
return $protocol . "://" . $_SERVER['HTTP_HOST'];
}
For example with the function above, it works fine if I work with the same directory, but if I make a sub directory, and work in it, it will give me the location of the sub directory also for example. I just want example.com
but it gives me example.com/sub
if I'm working in the folder sub
. If I'm using the main
directory,the function works fine. Is there an alternative to $_SERVER['HTTP_HOST']
?
Or how could I fix my function/code to get the main url only? Thanks.
asked Jun 19, 2013 at 20:56
1
Use SERVER_NAME
.
echo $_SERVER['SERVER_NAME']; //Outputs www.example.com
answered Jun 19, 2013 at 21:01
Bad WolfBad Wolf
7,9564 gold badges33 silver badges43 bronze badges
4
You could use PHP's parse_url[]
function
function url[$url] {
$result = parse_url[$url];
return $result['scheme']."://".$result['host'];
}
answered Jun 19, 2013 at 21:00
3
Shortest solution:
$domain = parse_url['//google.com', PHP_URL_HOST];
answered May 11, 2017 at 9:08
barbushinbarbushin
5,1135 gold badges35 silver badges43 bronze badges
6
/**
* Suppose, you are browsing in your localhost
* //localhost/myproject/index.php?id=8
*/
function getBaseUrl[]
{
// output: /myproject/index.php
$currentPath = $_SERVER['PHP_SELF'];
// output: Array [ [dirname] => /myproject [basename] => index.php [extension] => php [filename] => index ]
$pathInfo = pathinfo[$currentPath];
// output: localhost
$hostName = $_SERVER['HTTP_HOST'];
// output: //
$protocol = strtolower[substr[$_SERVER["SERVER_PROTOCOL"],0,5]]=='https'?'https':'http';
// return: //localhost/myproject/
return $protocol.'://'.$hostName.$pathInfo['dirname']."/";
}
answered May 6, 2016 at 11:17
JasmeenJasmeen
8569 silver badges16 bronze badges
3
Use parse_url[]
like this:
function url[]{
if[isset[$_SERVER['HTTPS']]]{
$protocol = [$_SERVER['HTTPS'] && $_SERVER['HTTPS'] != "off"] ? "https" : "http";
}
else{
$protocol = 'http';
}
return $protocol . "://" . parse_url[$_SERVER['REQUEST_URI'], PHP_URL_HOST];
}
Here is another shorter option:
function url[]{
$pu = parse_url[$_SERVER['REQUEST_URI']];
return $pu["scheme"] . "://" . $pu["host"];
}
answered Jun 19, 2013 at 21:01
Get Off My LawnGet Off My Lawn
31.8k34 gold badges157 silver badges299 bronze badges
1
Step-1
First trim the trailing backslash [/] from the URL. For example, If the URL is //www.google.com/ then the resultant URL will be //www.google.com
$url= trim[$url, '/'];
Step-2
If scheme not included in the URL, then prepend it. So for example if the URL is www.google.com then the resultant URL will be //www.google.com
if [!preg_match['#^http[s]?://#', $url]] {
$url = '//' . $url;
}
Step-3
Get the parts of the URL.
$urlParts = parse_url[$url];
Step-4
Now remove www. from the URL
$domain = preg_replace['/^www\./', '', $urlParts['host']];
Your final domain without http and www is now stored in $domain variable.
Examples:
//www.google.com => google.com
//www.google.com => google.com
www.google.com => google.com
//google.com => google.com
answered Nov 28, 2017 at 9:22
1
2 lines to solve it
$actual_link = [isset[$_SERVER['HTTPS']] && $_SERVER['HTTPS'] === 'on' ? "https" : "http"] . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$myDomain = preg_replace['/^www\./', '', parse_url[$actual_link, PHP_URL_HOST]];
answered Apr 20, 2019 at 20:35
FadiFadi
2272 silver badges6 bronze badges
1
/* Get sub domain or main domain url
* $url is $_SERVER['SERVER_NAME']
* $index int remove subdomain if acceess from sub domain my current url is //support.abcd.com ["support" = 7 [char]]
* $subDomain string
* $issecure string https or http
* return url
* call like echo getUrl[$_SERVER['SERVER_NAME'],7,"payment",true,false];
* out put //payment.abcd.com
* second call echo getUrl[$_SERVER['SERVER_NAME'],7,null,true,true];
*/
function getUrl[$url,$index,$subDomain=null,$issecure=false,$www=true] {
//$url=$_SERVER['SERVER_NAME']
$protocol=[$issecure==true] ? "//" : "//";
$url= substr[$url,$index];
$www =[$www==true] ? "www": "";
$url= empty[$subDomain] ? $protocol.$url :
$protocol.$www.$subDomain.$url;
return $url;
}
answered May 22, 2019 at 5:22
Aasif khanAasif khan
1311 silver badge8 bronze badges
Use this code is whork :
if [!preg_match['#^http[s]?://#', $url]] {
$url = '//' . $url;
}
$urlParts = parse_url[$url];
$url = preg_replace['/^www\./', '', $urlParts['host']];
answered Jan 11, 2021 at 0:02
lookly Devlookly Dev
3073 silver badges4 bronze badges
1
This works fine if you want the http protocol also since it
could be http or https.
$domainURL = $_SERVER['REQUEST_SCHEME']."://".$_SERVER['SERVER_NAME'];
answered Apr 18, 2020 at 7:52
RudolphRudolph
1391 silver badge7 bronze badges
Please try this:
$uri = $_SERVER['REQUEST_URI']; // $uri == example.com/sub
$exploded_uri = explode['/', $uri]; //$exploded_uri == array['example.com','sub']
$domain_name = $exploded_uri[1]; //$domain_name = 'example.com'
I hope this will help you.
Ismail RBOUH
9,9942 gold badges23 silver badges36 bronze badges
answered Jul 14, 2016 at 14:49
CharlesCharles
3102 silver badges8 bronze badges
1
Tenary Operator helps keep it short and simple.
echo [isset[$_SERVER['HTTPS']] ? 'http' : 'https' ]. "://" . $_SERVER['SERVER_NAME'] ;
answered Oct 2, 2018 at 17:09
OluwaseyeOluwaseye
6817 silver badges19 bronze badges
1
If you're using wordpress, use get_site_url:
get_site_url[]
answered May 13, 2020 at 1:44
ElronElron
1,0601 gold badge11 silver badges20 bronze badges