[Php] ¿Cómo puedo obtener la URL completa de la página actual en un servidor Windows / IIS?


Answers

$pageURL = (@$_SERVER["HTTPS"] == "on") ? "https://" : "http://";
if ($_SERVER["SERVER_PORT"] != "80")
{
    $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} 
else 
{
    $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
Question

WordPress una instalación de WordPress a una nueva carpeta en un servidor de Windows / IIS . Estoy configurando 301 redirecciones en PHP, pero parece que no funciona. Mis URLs de publicación tienen el siguiente formato:

http:://www.example.com/OLD_FOLDER/index.php/post-title/

No puedo entender cómo agarrar el /post-title/ parte de la URL.

$_SERVER["REQUEST_URI"] , que todos parecen recomendar, devuelve una cadena vacía. $_SERVER["PHP_SELF"] acaba de devolver index.php . ¿Por qué es esto y cómo puedo solucionarlo?




$_SERVER['REQUEST_URI'] no funciona en IIS, pero encontré esto: which sounds prometedor.




Añadir:

function my_url(){
    $url = (!empty($_SERVER['HTTPS'])) ?
               "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] :
               "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
    echo $url;
}

Entonces simplemente llame a la función my_url .




¿Todos olvidaron http_build_url ?

http_build_url($_SERVER['REQUEST_URI']);

Cuando no se pasan parámetros a http_build_url , asumirá automáticamente la URL actual. También esperaría que se incluyera REQUEST_URI , aunque parece ser necesario para incluir los parámetros GET.

El ejemplo anterior devolverá la URL completa.




En mi servidor apache, esto me da la URL completa en el formato exacto que está buscando:

$_SERVER["SCRIPT_URI"]



REQUEST_URI está configurado por Apache, por lo que no lo obtendrá con IIS. Intenta hacer var_dump o print_r en $ _SERVER y ver qué valores existen allí que puedes usar.




Use la siguiente línea en la parte superior de la página PHP donde está usando $_SERVER['REQUEST_URI'] . Esto resolverá tu problema.

$_SERVER['REQUEST_URI'] = $_SERVER['PHP_SELF'] . '?' . $_SERVER['argv'][0];





Links