PHP 기본 도메인/url을 가져오는 방법
function url(){
if(isset($_SERVER['HTTPS'])){
$protocol = ($_SERVER['HTTPS'] && $_SERVER['HTTPS'] != "off") ? "https" : "http";
}
else{
$protocol = 'http';
}
return $protocol . "://" . $_SERVER['HTTP_HOST'];
}
예를 들어, 같은 디렉토리로 작업하면 정상적으로 동작하지만, 서브 디렉토리를 만들어 작업하면 서브 디렉토리의 위치도 알 수 있습니다.나는 단지 원한다example.com
하지만 그것은 나에게example.com/sub
폴더 내에서 작업하는 경우sub
메인 디렉토리를 사용하고 있으면, 기능은 정상적으로 동작합니다.에 대한 대안이 있는가?$_SERVER['HTTP_HOST']
?
또는 메인 URL만 표시되도록 기능/코드를 수정하려면 어떻게 해야 합니까?감사해요.
사용하다SERVER_NAME
.
echo $_SERVER['SERVER_NAME']; //Outputs www.example.com
PHP를 사용할 수 있습니다.parse_url()
기능.
function url($url) {
$result = parse_url($url);
return $result['scheme']."://".$result['host'];
}
최단 솔루션:
$domain = parse_url('http://google.com', PHP_URL_HOST);
/**
* Suppose, you are browsing in your localhost
* http://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: http://
$protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https'?'https':'http';
// return: http://localhost/myproject/
return $protocol.'://'.$hostName.$pathInfo['dirname']."/";
}
사용하다parse_url()
다음과 같습니다.
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);
}
또 다른 단축 옵션을 다음에 나타냅니다.
function url(){
$pu = parse_url($_SERVER['REQUEST_URI']);
return $pu["scheme"] . "://" . $pu["host"];
}
순서 1
먼저 URL에서 후행 백슬래시(/)를 잘라냅니다.예를 들어 URL이 http://www.google.com/인 경우 결과 URL은 http://www.google.com가 됩니다.
$url= trim($url, '/');
순서 2
URL 에 스킴이 포함되어 있지 않은 경우는, 그 스킴을 선두에 추가합니다.예를 들어 URL이 www.google.com인 경우 결과 URL은 http://www.google.com가 됩니다.
if (!preg_match('#^http(s)?://#', $url)) {
$url = 'http://' . $url;
}
스텝 3
URL의 일부를 가져옵니다.
$urlParts = parse_url($url);
스텝-4
이제 URL에서 www.를 삭제합니다.
$domain = preg_replace('/^www\./', '', $urlParts['host']);
http 및 www를 사용하지 않는 최종 도메인이 $domain 변수에 저장됩니다.
예:
http://www.google.com = > google.com
https://www.google.com = > google.com
www.google.com = > google.com
http://google.com = > google.com
그것을 해결하기 위해 두 줄
$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));
/* 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 https://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 https://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) ? "https://" : "http://";
$url= substr($url,$index);
$www =($www==true) ? "www": "";
$url= empty($subDomain) ? $protocol.$url :
$protocol.$www.$subDomain.$url;
return $url;
}
다음 코드 사용:
if (!preg_match('#^http(s)?://#', $url)) {
$url = 'http://' . $url;
}
$urlParts = parse_url($url);
$url = preg_replace('/^www\./', '', $urlParts['host']);
http 프로토콜도 http 또는 https일 수 있으므로 이 방법은 올바르게 작동합니다. $domainURL = $_SERVER['REQUEST_SCHEME']."://".$_SERVER['SERVER_NAME'];
다음을 시도해 보십시오.
$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'
이것이 당신에게 도움이 되길 바랍니다.
Tenary Operator는 짧고 단순하게 유지하도록 도와줍니다.
echo (isset($_SERVER['HTTPS']) ? 'http' : 'https' ). "://" . $_SERVER['SERVER_NAME'] ;
워드프레스를 사용하는 경우 get_site_url을 사용합니다.
get_site_url()
언급URL : https://stackoverflow.com/questions/17201170/php-how-to-get-the-base-domain-url
'source' 카테고리의 다른 글
사전 대신 명명된 튜플을 사용해야 하는 시기와 이유는 무엇입니까? (0) | 2023.01.29 |
---|---|
vuejs v-for에 :key 속성이 필요한 이유는 무엇입니까? (0) | 2023.01.29 |
최대 날짜를 기준으로 그룹화 (0) | 2023.01.29 |
PHP를 사용하여 문자열에서 마지막 쉼표를 제거하려면 어떻게 해야 합니까? (0) | 2023.01.29 |
사설 컨스트럭터에 테스트 적용 범위를 추가하려면 어떻게 해야 합니까? (0) | 2023.01.29 |