WordPress将所有重定向链接到双重URL

时间:2014-06-19 01:06:15

标签: mysql wordpress .htaccess

一位开发人员在他的本地机器上建立了一个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');

我使用了那种编码,但在那里有适当的域信息。

所以现在发生了什么。

每当我访问主页时,它都有效,但图片不会显示出来。然后我点击一个链接,或前往teh wp-admin,它会在urlbar中显示两次url。所以它会像:

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

.htaccess文件都是默认文件,(如果WordPress位于子目录中,是否应该有重写规则,而不仅仅是/?)

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

更新:

好吧,所以我删除了整个数据库并将其重置,然后该网站正常工作。当然这意味着我失去了所有内容。我猜我把sql查询搞砸了。但我找不到任何有两个网址的地方,或者甚至会造成这种情况。当我弄清楚我的问题时,会有更多更新。

3 个答案:

答案 0 :(得分:23)

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

答案 1 :(得分:5)

在进行数据库调整时,您可能会发挥作用,但我发现它们存在问题。相反,每当有人移动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网址。此外,当您第一次将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&amp;的方式最后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

答案 2 :(得分:0)

http://放在数据库的site_url表格中的Home_urlwp_option前面。