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

Dau*_*Rob 9 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');
Run Code Online (Sandbox Code Playgroud)

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

所以现在发生了什么.

每当我去主页,它都可以工作,但图像不会出现.然后我点击一个链接,或前往teh wp-admin,它会在urlbar中显示两次url.所以它是这样的:

http://newdomain.com/~user/http://newdomain.com/~user/post-name-blah-blah-blah
Run Code Online (Sandbox Code Playgroud)

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

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

更新:

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

Dau*_*Rob 26

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

  • 你救了我的一天 (2认同)

Jak*_*uld 6

在进行数据库调整时,您可能会工作,我发现它们存在问题.相反,每当有人移动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');
Run Code Online (Sandbox Code Playgroud)

这将强制您的安装使用newdomain.comURL.此外,当您第一次将RELOCATE设置设置为true这样时:

define('RELOCATE', true);
Run Code Online (Sandbox Code Playgroud)

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

define('RELOCATE', false);
Run Code Online (Sandbox Code Playgroud)

但你也这样说:

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

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

# 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
Run Code Online (Sandbox Code Playgroud)

对此; 注意我改变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
Run Code Online (Sandbox Code Playgroud)