Wordpress 无法访问 Localhost

Wordpress 无法访问 Localhost

我尝试使用域名设置我的服务器,但在浏览器中输入 URL 时出现 301 错误。(http://localhost 工作正常,但http://example.com产生 301 错误)。

我已将 DNS 服务器指向正确的公共 IP,并将路由器设置为将传入的 80 端口转发到本地 80 端口,再转发到正确的私有 IP。

apache2.conf修改如下

#<Directory /var/www/>
#   Options Indexes FollowSymLinks
#   AllowOverride None
#   Require all granted
#</Directory>

<Directory /srv/>
    Options FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

这是为了将 Wordpress 安装在建议的位置/srv/www/wordpress/,而不需要网站的其他默认 Apache 位置......

wordpress.conf文件夹中的/etc/apache2/sites-enabled/内容如下:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias *.example.com

    DocumentRoot /srv/www/wordpress
    <Directory /srv/www/wordpress>
        Options FollowSymLinks
        AllowOverride Limit Options FileInfo
        DirectoryIndex index.php
        Require all granted
    </Directory>
    <Directory /srv/www/wordpress/wp-content>
        Options FollowSymLinks
        Require all granted
    </Directory>
</VirtualHost>

我正在使用 Ubuntu 20.04、Apache 2.4.41、Wordpress 5.8.1

2021 年 9 月 23 日更新

将此问题的标题从“Apache 服务器上出现 301 错误”编辑为“Wordpress 无法访问 Localhost”。以前,当我http://example.com从运行服务器的本地网络输入我的域名 () 时,我总是得到一个“超时”响应。301 错误发生在当时另一个人访问我的域名时外部。现在我找到了一种从外部访问我的域的方法,错误始终是:“Localhost 无法访问”。顺便说一句,这似乎只发生在 Wordpress 网站上;当我访问默认的“It Works”网站时,一切都很好(我取消了之前突出显示的行的注释)。这可能是因为 Wordpress 使用数据库,而用户的apache2.conf默认设置是?hostname"localhost"

[对于那些试图输入指向其服务器的域的人:如果您从服务器所在的同一本地网络执行此操作,它将不起作用(搜索“NAT 环回”以了解更多信息)。这不是这里的讨论,但我提到它是因为它花费了很多时间;localhost有效,修改/etc/hosts可以做一些作弊——据我所知仍然不能模拟外部请求——但最终,使用域名将不起作用。]

答案1

因此,解决方法是更新 Wordpress 数据库。具体操作如下:

访问您的 Wordpress 帐户后,只需在“设置”->“常规”中更改 Wordpress URL 和站点 URL:

WordPress Address (URL): <site_URL_here>

Site Address (URL): <site_URL_here>

或者

可以访问您的 Wordpress 数据库

  1. 使用你的 wordpress 站点的用户名登录 mysql(如果你忘记了你的用户名,它位于你的 wordpress 站点根目录中的 wp-config.php 中;相应的密码也在那里)
mysql -u <user_name_here> -p
  1. 选择你网站的数据库(如果你忘记了,wp-config.php 可以帮你解决)
use <database_name_here>
  1. 关键步骤:更新“home”和“siteurl”记录(wordpress官方文件注意,你应该省略 URL 上的任何尾随“/”)
UPDATE wp_options SET option_value="http://<site_URL_here>" WHERE option_name="home";
UPDATE wp_options SET option_value="http://<site_URL_here>" WHERE option_name="siteurl";
  1. 检查数据库记录是否刚刚更新
SELECT * FROM wp_options WHERE option_name = "home" OR option_name = "siteurl";

这就是这个问题的全部内容。

关于能否通过新地址访问您的网站:

如果 wordpress 网站托管在您自己的本地网络上,如上所述,您将无法从内部访问它,即从同一本地网络(包括服务器)上的设备访问它;无论是通过 localhost 还是您在上述步骤中输入的 URL,都无法工作。您只能从外部访问该网站(例如,从使用数据的手机、从朋友网络上的某台计算机、从工作中的计算机等)。因为这很麻烦,所以我找到了两个选项,以便您仍然可以从内部访问该网站:i) 您有一个可以处理 NAT 环回的路由器 ii) 您使用虚拟专用网络

我没有测试过 (i),但我知道 (ii) 有效,因为我就是这么做的。当 VPN 开启时,导航到您的 URL,您将能够看到该网站。

我认为这一点应该得到更多人的关注,以便了解如何在本地网络上设置和创建 Wordpress 站点

相关内容