WordPress 链接全部重定向到双 URL

Posted

技术标签:

【中文标题】WordPress 链接全部重定向到双 URL【英文标题】:WordPress links all redirect to double URL 【发布时间】:2014-08-09 10:34:09 【问题描述】:

一位开发人员在他的本地计算机上构建了一个 WordPress 网站。然后,他将整个安装迁移到服务器上。自然地,sql中的所有链接都设置为localhost:8888。然后我运行 SQL 更新来修复链接,使它们指向正确的域(现在是 ipaddress/~username 链接)。我仔细检查了我的工作,一切看起来都是正确的。

UPDATE wp_options SET option_value = replace(option_value, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_options SET option_value = replace(option_value, 'feed://www.olddomain.com', 'feed://newdomain.com');
UPDATE wp_posts SET guid = replace(guid, 'http://olddomain.com','http://newdomain.com');
UPDATE wp_posts SET post_content = replace(post_content, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://olddomain.com', 'http://newdomain.com');

我使用了该编码,但其中包含适当的域信息。

所以现在这就是正在发生的事情。

每当我转到主页时,它都能正常工作,但图像不显示。然后我点击一个链接,或者前往 wp-admin,它会在 urlbar 中显示 url 两次。所以它会变成这样:

http://newdomain.com/~user/http://newdomain.com/~user/post-name-blah-blah-blah

.htaccess 文件是默认的,(如果 WordPress 在子目录中,它应该有一个重写规则而不是 /?)

如果网站上的每个链接都没有像 SQL 中那样列出,那么什么会导致网站上的每个链接都转到同一个 url 两次?

更新:

好的,所以我删除了整个数据库并重新设置,然后网站就可以正常工作了。当然,这意味着我失去了所有内容。我猜我在某处搞砸了 sql 查询。但我找不到任何有两个网址的地方,甚至会导致这种情况。当我发现我的问题时,会有更多更新。

【问题讨论】:

【参考方案1】:

我解决了!希望如果其他人来到这里并有同样的错误,这将有所帮助。在wp_options 表中,site_urlhome 的行前面需要有http://。不知何故,我的 sql 查询破坏了那部分。当然,我没有注意到,因为地址看起来正确,因为这通常有效。但在这种情况下,它导致了一些链接的永无止境的循环,而在另一些链接中,地址只是翻了一番。

【讨论】:

你拯救了我的一天 有完全相同的问题。 example.com/wp-admin 重定向到 example.com/wp-admin/example.com/wp-login.php 并明显失败,但 example.com/wp-login.php 正在工作,但后来的资源似乎是 f up ; ) .使用 http 将站点 url 固定到那个就可以了。 非常感谢您发布解决方案!让我免于头疼。 6 年后,再次感谢!我只添加了 IP 地址(忘记了 HTTP://),这让我发疯了。【参考方案2】:

虽然您所做的数据库调整可能会奏效,但我发现它们存在问题。相反,每当移动 WordPress 网站时,您需要在 wp-config.php 文件中的以下变量上正确调整 WordPress 安装中的配置:

define('WP_SITEURL', 'http://newdomain.com/wordpress');
define('WP_HOME', 'http://newdomain.com/');
define('WP_CONTENT_DIR', '/path/to/your/wordpress/wp-content');
define('WP_CONTENT_URL', 'http://newdomain.com/wp-content');

这将强制您的安装使用newdomain.com URL。此外,当您第一次这样做时,将 RELOCATE 设置为 true,如下所示:

define('RELOCATE', true);

这基本上告诉 WordPress 重新调整(这是我的技术术语)它为新设置存储了设置。在您重新加载网站并按预期工作后,将RELOCATE 设置回false,如下所示:

define('RELOCATE', false);

但你也这么说:

(如果 WordPress 在子目录中,它应该有一个重写规则 而不仅仅是 /?)

如果您将 WordPress 放在子目录中,则必须进行更改。因此,让我们假设 WordPress 位于名为 coolsite/ 的子目录中。然后从这里更改默认的 WordPress .htaccess

# BEGIN WordPress
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.php$ - [L]
  RewriteCond %REQUEST_FILENAME !-f
  RewriteCond %REQUEST_FILENAME !-d
  RewriteRule . /index.php [L]
</IfModule>
# END WordPress

到这个;注意我更改RewriteBase 和最后一个RewriteRule 的方式:

# BEGIN WordPress
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /coolsite/
  RewriteRule ^index\.php$ - [L]
  RewriteCond %REQUEST_FILENAME !-f
  RewriteCond %REQUEST_FILENAME !-d
  RewriteRule . /coolsite/index.php [L]
</IfModule>
# END WordPress

【讨论】:

谢谢你让我知道这种更好的方法。不幸的是,这些事情都没有改变我。我仍然像以前一样遇到这些错误。【参考方案3】:

在您的数据库的wp_option 表中,将http:// 放在site_urlHome_url 前面。

【讨论】:

以上是关于WordPress 链接全部重定向到双 URL的主要内容,如果未能解决你的问题,请参考以下文章

我需要撤消重定向插件完成的重定向 URL

在Wordpress上发布保存后更改重定向URL

让 wordpress 重定向到不同的地方,或者根本不重定向

如何在不重定向原始 URL 的情况下获取短 URL 服务的信息或实际信息

将 wordpress 从域迁移到另一个域 - 但 URL 仍重定向到旧域

登录后如何将WordPress用户重定向到上一页