一位开发人员在他的本地机器上建立了一个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查询搞砸了。但我找不到任何有两个网址的地方,或者甚至会造成这种情况。当我弄清楚我的问题时,会有更多更新。
答案 0 :(得分:23)
我解决了!希望如果有其他人来到这里并有同样的错误,这将有所帮助。在wp_options
表中,site_url
和home
的行需要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_url
和wp_option
前面。