使 WordPress 站点可以从 LAN 内部和外部访问

Posted

技术标签:

【中文标题】使 WordPress 站点可以从 LAN 内部和外部访问【英文标题】:Making a WordPress site accesible from inside LAN and outside it 【发布时间】:2015-04-25 07:47:45 【问题描述】:

我在局域网内的 PC 上配置了 WordPress。因此,我可以使用 localhost/WordPress 从同一台计算机或 LAN 上的另一台计算机使用 IP/WordPress 访问它。

我配置了路由器,因此端口 80 被重定向到服务器 IP,但是如果从我的 LAN 外部加载页面,它无法加载 CSS 和 JS,因为路由是 WordPress 配置上的 localhost。如果我将其更改为我的 freedns url,比如说:myamazingurl.mooo.com,它可以从我的 LAN 外部访问,它会加载 CSS 和 JS。

现在我无法从局域网内部访问我的网站。 有什么解决方法或解决方法吗?

我阅读了有关 dnsmasq 的信息,但没有成功。

【问题讨论】:

使用相对 URL 怎么样?而不是http://localhost/myfile.css ==> /myfile.css 我认为 Wordpress 使用基本网址。所以我不知道这是否可能。 :( 【参考方案1】:

主要问题是因为 wordpress 使用数据库中的服务器地址。

WordPress 使用名为 homesiteurl 的选项中的根 url,因此如果您尝试在他们的计算机之外访问 WordPress,它可能会得到不正确的 css 和 javascript 路径。

您需要更改setting下的选项 -> general 并用您的服务器IP填写WordPress Address (URL)Site address (URL)

如果你想在不做重定向的情况下得到正确的路径,你可以在wp-config.php下定义动态根url

define('ABSPATH', dirname(__FILE__) . '/');下面添加这个脚本

/**
 * 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);

【讨论】:

IP 地址方法对我很有效。无需下载任何东西。【参考方案2】:

在尝试了几乎所有方法来整理 WP 开发人员并对其进行处理和取消处理之后,我终于找到了上述解决方案。 相对 URL 插件是一种享受。感谢 ByteHamster 的提示:)

更新:经过测试,这并不是我想要的。在这里找到了修复:https://wordpress.stackexchange.com/questions/55239/cant-access-wp-site-over-wifi-network

即……

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.

现在我可以在 LAN 上的所有设备上看到开发站点的全部荣耀。

【讨论】:

【参考方案3】:

看看Relative URL WordPress 插件。即使插件是为从本地网络通过 IP 访问页面而制作的,效果应该保持不变。 (因为主要问题是不断变化的 URL)

相对 URL 将 wp_make_link_relative 函数应用于链接(帖子、类别、页面等)以将它们转换为相对 URL。在移动设备上调试本地 WordPress 实例时对开发人员很有用。

http://localhost:8080/wp/2012/09/01/hello-world/ 将转换为/wp/2012/09/01/hello-world/

http://localhost:8080/wp/wp-content/themes/twentyeleven/style.css 将转换为/wp/wp-content/themes/twentyeleven/style.css

然后激活此插件后,您可以在 iPad 或其他移动设备上使用 http://192.168.0.1:8080/wp/ 访问您的本地实例,而不会出现样式和导航问题。

【讨论】:

【参考方案4】:

我发现的一个选项是编辑 /etc/hosts 文件并将 freedns url 重定向到我的本地主机。所以它现在正在工作,但我不知道这是否是正确的做法......

【讨论】:

以上是关于使 WordPress 站点可以从 LAN 内部和外部访问的主要内容,如果未能解决你的问题,请参考以下文章

XAMPP wordpress LAN,重定向到本地主机

通过 LAN 访问 MAMP 中的 WordPress 网络安装

Wordpress - 未登录WP-Backend时的ERR_CONTENT_DECODING_FAILED

通过 LAN 查看本地主机站点 [关闭]

来自lan和外部的wordpress访问

站点搭建从零開始 WordPress站点的完好