使 WordPress 站点可从 LAN 内部和外部访问
Making a WordPress site accesible from inside LAN and outside it
我在局域网内的一台 PC 上配置了 WordPress。因此,我可以使用 localhost/WordPress 从同一台计算机或局域网中使用 IP/WordPress 的另一台计算机访问它。
我配置了路由器,因此端口 80 被重定向到服务器 IP,但是如果从我的 LAN 外部加载页面,它无法加载 CSS 和 JS,因为路由是 WordPress 配置中的本地主机。如果我将它更改为我的 freedns url,比方说:myamazingurl.mooo.com,它可以从我的 LAN 外部访问并加载 CSS 和 JS.
现在我无法从 局域网内访问我的网站。
有任何解决方法或解决方法吗?
我阅读了有关 dnsmasq 的内容,但没有成功。
我发现的一个选项是编辑 /etc/hosts 文件并将 freedns url 重定向到我的本地主机。所以它现在可以工作了,但我不知道这样做是否正确...
看看 Relative URL WordPress 插件。即使该插件是为从本地网络通过 IP 访问页面而制作的,但效果应该保持不变。 (因为主要问题是变化URL)
Relative URL applies wp_make_link_relative function to links (posts, categories, pages and etc.) to convert them to relative URLs. Useful for developers when debugging local WordPress instance on a mobile device.
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
Then after activating this plugin, you can simply access your local instance using http://192.168.0.1:8080/wp/ on your iPad or other mobile devices without having styles and navigation issue.
在尝试了几乎所有的方法来整理一个 WP dev 并对其进行钻孔和钻孔之后,我终于找到了上述解决方案。
Relative 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 上的所有设备上看到开发站点。
主要问题是因为 wordpress 使用数据库中的服务器地址。
WordPress 使用名为 home
和 siteurl
的选项中的根 url,因此如果您尝试在他们的计算机之外访问 WordPress,它可能会获得 css 的错误路径和 javascript.
您需要更改 setting
-> general
下的选项,并在 WordPress Address (URL)
和 Site address (URL)
中填写您的服务器 IP
如果你想得到正确的路径而不做重定向,你可以在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);
我在局域网内的一台 PC 上配置了 WordPress。因此,我可以使用 localhost/WordPress 从同一台计算机或局域网中使用 IP/WordPress 的另一台计算机访问它。
我配置了路由器,因此端口 80 被重定向到服务器 IP,但是如果从我的 LAN 外部加载页面,它无法加载 CSS 和 JS,因为路由是 WordPress 配置中的本地主机。如果我将它更改为我的 freedns url,比方说:myamazingurl.mooo.com,它可以从我的 LAN 外部访问并加载 CSS 和 JS.
现在我无法从 局域网内访问我的网站。 有任何解决方法或解决方法吗?
我阅读了有关 dnsmasq 的内容,但没有成功。
我发现的一个选项是编辑 /etc/hosts 文件并将 freedns url 重定向到我的本地主机。所以它现在可以工作了,但我不知道这样做是否正确...
看看 Relative URL WordPress 插件。即使该插件是为从本地网络通过 IP 访问页面而制作的,但效果应该保持不变。 (因为主要问题是变化URL)
Relative URL applies wp_make_link_relative function to links (posts, categories, pages and etc.) to convert them to relative URLs. Useful for developers when debugging local WordPress instance on a mobile device.
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
Then after activating this plugin, you can simply access your local instance using http://192.168.0.1:8080/wp/ on your iPad or other mobile devices without having styles and navigation issue.
在尝试了几乎所有的方法来整理一个 WP dev 并对其进行钻孔和钻孔之后,我终于找到了上述解决方案。 Relative 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 上的所有设备上看到开发站点。
主要问题是因为 wordpress 使用数据库中的服务器地址。
WordPress 使用名为 home
和 siteurl
的选项中的根 url,因此如果您尝试在他们的计算机之外访问 WordPress,它可能会获得 css 的错误路径和 javascript.
您需要更改 setting
-> general
下的选项,并在 WordPress Address (URL)
和 Site address (URL)
中填写您的服务器 IP
如果你想得到正确的路径而不做重定向,你可以在wp-config.php
将此脚本添加到 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);