Obter o domínio actual

Tenho o meu site no servidor.
http://www.myserver.uk.com
Para isso, tenho dois domínios:

http://one.com

e

http://two.com

Eu gostaria de obter com o domínio atual do PHP, mas se eu usar $_SERVER['HTTP_HOST'] então isso me mostra

myserver.uk.com

em vez de:

one.com or two.com
Como posso obter domínio, não o nome do servidor? Eu tenho PHP versão 5.2

 98
Author: Hamid Sarfraz, 2012-05-23

8 answers

Tenta usar isto.: $_SERVER['SERVER_NAME']

Ou parse

$_SERVER['REQUEST_URI']

Editar:

Acache_request_ cabeçalhos()

 134
Author: onehalf, 2017-08-06 00:56:57

A melhor utilização seria

echo $_SERVER['HTTP_HOST'];

E pode ser usado assim

if(strpos( $_SERVER['HTTP_HOST'], 'banana.com') !== false){
    echo "Yes this is indeed the banana.com domain";
}

Este código abaixo é uma boa maneira de ver todas as variáveis em $_SERVER numa saída HTML estruturada com as suas palavras-chave realçadas, que pára imediatamente após a execução. Uma vez que às vezes me esqueço de qual me usar - acho que isto pode ser bom.

<?php 
// change banana.com to the domain you were looking for.. 
$wordToHighlight= "banana.com";
$serverVarHighlighted = str_replace( $wordToHighlight, '<span style=\'background-color:#883399; color: #FFFFFF;\'>'. $wordToHighlight .'</span>',  $_SERVER );
echo "<pre>";
print_r( $serverVarHighlighted );
echo "</pre>";
exit();
?>
 40
Author: K. Kilian Lindberg, 2014-05-28 13:12:33

Usar $_SERVER['HTTP_HOST'] dá-me um subdomínio.) maindomain.extensao. Parece-me a solução mais fácil.

Editar: se você está realmente 'redirecionando' através de um iFrame você poderia adicionar um parâmetro get que afirma o domínio.

<iframe src="myserver.uk.com?domain=one.com"/>

E depois pode definir uma variável de sessão que persiste estes dados ao longo da sua aplicação.

 37
Author: Raz0rwire, 2013-04-15 10:45:32

Tenta {[[0]}. Dicas: crie um arquivo de PHP que chama a função phpinfo() e veja a seção "Variáveis de PHP". Há um monte de variáveis úteis que nunca pensámos lá.

 6
Author: flowfree, 2014-10-03 03:54:25
Resposta tardia, mas aqui vai:
$currentDomain = preg_replace('/www\./i', '', $_SERVER['SERVER_NAME']);

Dar-lhe-á um nome de domínio LiMPO, SEM www

 5
Author: Pedro Lobito, 2016-10-21 18:32:00

Eu sei que isto pode não ser inteiramente sobre o assunto, mas na minha experiência, eu acho útil armazenar WWW-ness da URL atual em uma variável.

Edit: além disso, por favor veja o meu comentário abaixo, para ver onde isto está a chegar.

Isto é importante para determinar se enviar chamadas Ajax com "www", ou sem:

$.ajax("url" : "www.site.com/script.php", ...

$.ajax("url" : "site.com/script.php", ...

Ao enviar uma chamada Ajax o nome de domínio deve corresponder ao da barra de endereços do navegador, caso contrário você terá SecurityError na consola.

Então, arranjei esta solução para resolver o problema:
<?php
    substr($_SERVER['SERVER_NAME'], 0, 3) == "www" ? $WWW = true : $WWW = false;

    if ($WWW) {
        /* We have www.example.com */
    } else {
        /* We have example.com */
    }
?>

Então, baseado em se $WWW é verdadeiro, ou falso executar a chamada Ajax adequada.

Eu sei que isto pode parecer trivial, mas este é um problema comum que é fácil de tropeçar.
 3
Author: InfiniteStack, 2016-08-23 18:38:59

Domínio na sua base de dados ou ficheiro de configuração. Muitos frameworks já cuidam disso para você, então consulte a documentação para o seu framework particular.

Para usuários do WordPress:

Se o seu uso do WordPress, você pode obter o domínio de forma segura assim:

$urlparts = parse_url(home_url());
$domain = $urlparts['host'];

(mas se estiver a construir um URL no WordPress, basta usar home_url ou site_url .)

 3
Author: Mr. Me, 2018-05-11 23:56:27

Tenta simplesmente:

echo apache_request_headers()[3];
 -1
Author: Motion, 2018-06-17 14:14:34