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_url
和home
的行前面需要有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_url
和Home_url
前面。
【讨论】:
以上是关于WordPress 链接全部重定向到双 URL的主要内容,如果未能解决你的问题,请参考以下文章
让 wordpress 重定向到不同的地方,或者根本不重定向
如何在不重定向原始 URL 的情况下获取短 URL 服务的信息或实际信息