Hacer que un sitio de WordPress sea accesible desde dentro y fuera de LAN

4 minutos de lectura

avatar de usuario
Pijulí

Configuré WordPress en una PC dentro de mi LAN. Entonces puedo acceder desde la misma computadora con localhost/WordPress u otra PC en la LAN con IP/WordPress.

Configuré el enrutador para que el puerto 80 se redirija a la IP del servidor, pero si se carga una página desde fuera de mi LAN, no se pueden cargar CSS y JS porque la ruta es localhost en la configuración de WordPress. Si lo cambio a mi url freedns, digamos: myamazingurl.mooo.com, es accesible desde fuera de mi LAN y carga CSS y JS.

Ahora no puedo acceder a mi sitio web desde en el interior la LAN. ¿Hay alguna solución o arreglo para eso?

Leí sobre dnsmasq pero no tuve éxito.

  • ¿Qué pasa con el uso de URL relativas? en vez de http://localhost/myfile.css ==> /myfile.css

    – ByteHamster

    23 de febrero de 2015 a las 20:49

  • Creo que WordPress usa una URL base. Así que no sé si es posible. 🙁

    – Pijulí

    23 de febrero de 2015 a las 21:03

avatar de usuario
Lafif Astahdziq

el problema principal es que wordpress usa la dirección del servidor de la base de datos.

WordPress usa la URL raíz de la opción llamada home y siteurl por lo tanto, si intenta acceder a WordPress fuera de su computadora, es posible que obtenga la ruta incorrecta para css y javascript.

necesita cambiar las opciones en setting -> general y complete el WordPress Address (URL) y el Site address (URL) con la ip de tu servidor

si desea obtener la ruta correcta sin redirigir, puede definir la URL raíz dinámica en wp-config.php

agregue este script debajo del define('ABSPATH', dirname(__FILE__) . "https://stackoverflow.com/");

/**
 * get home url from absolute path
 * @return string url to main site
 * hello@lafif.me
 */
function get_dynamic_home_url(){
    $base_dir  = ABSPATH; // Absolute path
    $doc_root  = preg_replace("!${_SERVER['SCRIPT_NAME']}$!", '', $_SERVER['SCRIPT_FILENAME']);
    $base_url  = preg_replace("!^${doc_root}!", '', $base_dir);
    $protocol  = empty($_SERVER['HTTPS']) ? 'http' : 'https';
    $port      = $_SERVER['SERVER_PORT'];
    $disp_port = ($protocol == 'http' && $port == 80 || $protocol == 'https' && $port == 443) ? '' : ":$port";
    $domain    = $_SERVER['SERVER_NAME'];
    $home_url  = "${protocol}://${domain}${disp_port}${base_url}";

    return $home_url;
}
$url = get_dynamic_home_url();
define('WP_SITEURL', $url);
define('WP_HOME', $url);

  • El método de la dirección IP funciona bien para mí. No es necesario descargar nada.

    – zeta

    22 de octubre de 2019 a las 7:36

Echa un vistazo a la URL relativa Complemento de WordPress. Aunque el complemento está hecho para acceder a la página a través de IP desde la red local, el efecto debería ser el mismo. (Porque el principal problema es el cambio de URL)

La URL relativa aplica la función wp_make_link_relative a los enlaces (publicaciones, categorías, páginas, etc.) para convertirlos en URL relativas. Útil para los desarrolladores al depurar una instancia local de WordPress en un dispositivo móvil.

http://localhost:8080/wp/2012/09/01/hello-world/ se convertirá en /wp/2012/09/01/hello-world/

http://localhost:8080/wp/wp-content/themes/twentyeleven/style.css se convertirá en /wp/wp-content/themes/twentyeleven/style.css

Luego, después de activar este complemento, simplemente puede acceder a su instancia local usando http://192.168.0.1:8080/wp/ en su iPad u otros dispositivos móviles sin tener estilos y problemas de navegación.

Una opción que encontré es editar el archivo /etc/hosts y redirigir la URL de freedns a mi localhost. Así que está funcionando ahora, pero no sé si es la forma correcta de hacer esto…

avatar de usuario
kwaka

Después de probar casi todo para resolver un desarrollador de WP y trabajar y deshacer, finalmente encontré la solución anterior. El complemento de URL relativa funciona de maravilla. Gracias por el consejo ByteHamster 🙂

ACTUALIZACIÓN: Después de probar esto no era exactamente lo que estaba buscando. Encontré una solución aquí: https://wordpress.stackexchange.com/questions/55239/cant-access-wp-site-over-wifi-network

A saber…

define( 'WP_HOME', 'http://' . $_SERVER['HTTP_HOST'] );

// or

// define( 'WP_HOME', 'http://' . $_SERVER['HTTP_HOST'] . '/path_to_dir' );

define( 'WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST'] );

// or

// define( 'WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST'] . '/path_to_dir' ); //this is the one that fixed my issue.

Ahora puedo ver el sitio de desarrollo en todo su esplendor en todos los dispositivos de la LAN.

¿Ha sido útil esta solución?