2012-05-23 12 views
85

tengo mi sitio en el servidorObtener dominio actual

http://www.myserver.uk.com 

para esto he de dos dominios:

http://one.com 

y

http://two.com 

me gustaría llegar con PHP dominio actual, pero si uso $_SERVER['HTTP_HOST'] entonces esta me muestra

myserver.uk.com 

en lugar de:

one.com or two.com 

¿Cómo puedo obtener dominio, no el nombre del servidor? Tengo PHP versión 5.2

+0

Sólo se puede obtener la URL principal. ¿Cuál es el Primario de esos tres? –

+1

¿Exactamente cómo sus dos dominios 'redirige' las solicitudes a su servidor? –

+1

@infgeoax probablemente un marco ... – CodeCaster

Respuesta

116

tratar de usar esto: $_SERVER['SERVER_NAME']

o analizar

$_SERVER['REQUEST_URI'] 

EDIT:

apache_request_headers()

+0

este nombre también me muestra el servidor en lugar del nombre dominio –

+0

ok, intente con apache_request_headers() – onehalf

+4

-1: con esta sola respuesta, no sé exactamente qué hacen las diferentes sugerencias que estoy viendo hacer. Claro, esto me da un punto para seguir buscando, pero esta no es una buena respuesta ... – Jasper

6

Pruebe $_SERVER['SERVER_NAME']. Consejos: Crear un archivo PHP que llama a la función phpinfo() y ver la sección "Variables de PHP". Hay un montón de variables útiles que nunca pensamos allí.

+0

este me muestre también el servidor de nombres en lugar del dominio de nombre –

+0

siempre puede intentar imprimir_r-ing el $ _SERVER y buscar –

35

Usando $_SERVER['HTTP_HOST'] me obtiene (subdominio.) Maindomain.extension. Parece la solución más fácil para mí.

Editar: si usted es realmente 'redireccionamiento' a través de un marco flotante puede agregar un parámetro GET que establece el dominio.

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

Y luego puede establecer una variable de sesión que conserve estos datos en toda su aplicación.

+1

más importante, incluye el número de puerto para que no tenga que volver a utilizarlo después. phpinfo sugerido por bsdnoobz me ayuda a encontrar la solución correcta. – Dummy

34

El mejor uso sería

echo $_SERVER['HTTP_HOST']; 

y se puede utilizar como esto

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

Este código de abajo es una buena manera de ver todas las variables $ _SERVER en una salida HTML estructurado con sus palabras clave resaltadas, que se detienen directamente después de la ejecución. Como a veces olvido cuál usar, creo que esto puede ser ingenioso.

<?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(); 
?> 
3

Sé que esto puede no ser del todo sobre el tema, pero en mi experiencia, me parece almacenar WWW-dad de la URL actual en una variable de utilidad.

Editar: Además, consulte mi comentario a continuación, para ver a qué se dirige.

Esto es importante para determinar si se debe despachar llamadas Ajax con "www", o sin:

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

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

Cuando gestionen un Ajax llamar el nombre de dominio debe coincidir con el de la barra de direcciones del navegador, de lo contrario se tiene Uncaught SecurityError en la consola.

Así me ocurrió con esta solución para abordar la cuestión:

<?php 
    substr($_SERVER['SERVER_NAME'], 0, 3) == "www" ? $WWW = true : $WWW = false; 

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

Luego, en función de si $ WWW es verdadera, o falsa ejecución la llamada Ajax adecuada.

Sé que esto puede sonar trivial, pero este es un problema tan común que es fácil tropezar.

+0

OP pidió explícitamente el dominio, y no el _SERVER_NAME_. –

+0

Cierto, pero en estos días también debe preocuparse por el problema de www. – InfiniteStack

+0

¿Por qué? En JS, podrías mirar en 'window.location'. En PHP tienes 'SERVER_NAME'. –

4

respuesta tardía, pero aquí va:

$currentDomain = preg_replace('/www\./i', '', $_SERVER['SERVER_NAME']); 

Se le dará un nombre de dominio limpia, sin www

Cuestiones relacionadas