Wordpress:将Multisite从服务器移动到localhost

Elh*_*Gdz 8 php wordpress .htaccess

我正在尝试将部署的WordPress多站点移动到本地环境.我备份了服务器数据库和文件.在我的本地环境中,我创建了一个新数据库并导入了备份.我还将服务器文件复制到本地计算机.

我做了这些步骤:

  1. 我改的wp-config.php文件,并与新的更新它db-name,db-username,db-password并设置define('DOMAIN_CURRENT_SITE', 'www.mysitename.com');define('DOMAIN_CURRENT_SITE', 'localhost/mysitename');.

  2. option_valuewp-option数据库表中更改为指向我的本地地址.

  3. 我还从.htaccess中删除了这些行:

    # Redirect non-www urls to www
    RewriteCond %{HTTP_HOST} !^www\.mysitename\.com
    RewriteRule (.*) http://www.mysitename.com/$1 [R=301,L]
    
    Run Code Online (Sandbox Code Playgroud)

但是当我转到127.0.0.1/mysitename时,我收到此错误:此网页有一个重定向循环.

当我换define('DOMAIN_CURRENT_SITE', 'localhost/mysitename');define('DOMAIN_CURRENT_SITE', 'localhost');并转到127.0.0.1/mysitename地址时,它会显示phpinfo()页面.

我该如何解决我的问题?

请解释我是否必须在.htaccesswp-config.php文件中设置一些内容.

非常感谢.

nin*_*nja 14

编辑:最近不得不再次迁移一个多站点,这个指南从01/03-2016仍然可以正常工作.数据库编辑非常愚蠢,一个错误,你要么死白屏或连接数据库错误,所以要注意:)

我无法想出允许带协议的localhost链接(http://),所以如果你看到"(http:)localhost"将其读作http:// localhost /.如果有人可以为我编辑这将是伟大的!

正常的Wordpress迁移:

  1. 从localhost备份数据库.
  2. 在新服务器上创建新数据库,在此处导入导出的数据库.
  3. 将所有Wordpress文件上传到服务器.
  4. 编辑wp-config.php,更改数据库名称,用户名和密码.通常在"define('WP_DEBUG'...我定义"WP_HOME"和"WP_SITEURL"之下,这些将覆盖WordPress数据库设置以获取根目录."DOMAIN_CURRENT_SITE"用于多站点安装.因此,如果它不是多站点,请不要使用它,如果是多站点,只需使用它而不是WP_HOME和WP_SITEURL.

    define('WP_HOME', 'http://mysitename.com');
    define('WP_SITEURL', 'http://mysitename.com');
    
    Run Code Online (Sandbox Code Playgroud)
  5. 如果您从localhost上传了.htaccess,请将其从服务器中删除.

  6. 访问http://mysitename.com/wp-admin,登录并转到永久链接设置,然后按"保存"以生成新的.htaccess.

而且你已经完成了!无需费心去做数据库更改.对于localhost安装,只需将WP_HOME和WP_SITEURL定义为localhost.

如何迁移多站点:

Wordpress中的多站点是一个痛苦的迁移,它涉及几个数据库更改,甚至当你使一切正确时,似乎只有一些时间没有错误.但是这些是建议的步骤:

  1. 导出数据库,与上面相同.
  2. 上传新数据库,如上所述.
  3. 添加所有Wordpress文件,与上面相同.
  4. 使用新的数据库信息编辑wp-config.php,添加以下定义:

    define('MULTISITE', true);
    define('SUBDOMAIN_INSTALL', false); // true or false depending if the paths for each multisite is pointed by a subdomain.
    define('DOMAIN_CURRENT_SITE', 'localhost'); // localhost is the DOMAIN of the new location, so even if the ABS_PATH is localhost/whatever, you should have localhost here.
    define('PATH_CURRENT_SITE', '/');
    define('SITE_ID_CURRENT_SITE', 1);
    define('BLOG_ID_CURRENT_SITE', 1);
    
    Run Code Online (Sandbox Code Playgroud)

您应该在要导出的网站的wp-config.php中包含所有这些内容,因此只需从中复制粘贴它们,然后编辑DOMAIN_CURRENT_SITE即可.

  1. 像这样编辑你的htaccess(Rewritebase/path /应该是相对路径,即如果你的网站位于localhost/mypage,它应该是"RewriteBase/mypage /"):

    # MultiSite
    RewriteEngine On
    RewriteBase /subfolder-from-localhost/
    RewriteRule ^index\.php$ - [L]
    
    # add a trailing slash to /wp-admin
    RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
    RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
    RewriteRule . index.php [L]
    
    Run Code Online (Sandbox Code Playgroud)
  2. 数据库编辑时间!需要对多站点的每个子站点执行这些步骤,如果我键入更改表"wp_site",则应在wp_site1/wp_site2等中复制它...

在表wp_options中:将字段"site_url"和"home"更改为(http :) localhost /子文件夹(没有尾部斜杠).

在表wp_blogs中:将"domain"更改为"localhost",并将每个子站点的每个条目的"path"更改为/ subfolder /(必须具有尾部斜杠)

在表wp_site中:将"domain"更改为"localhost",将"path"更改为/ subfolder /(必须具有尾部斜杠)

在表wp_sitemeta中:将"siteurl"更改为完整路径,即(http :) localhost /子文件夹/(必须有尾部斜杠)

  1. 现在您应该至少可以访问您的页面,如果您仍然获得重定向循环或白屏死机,请仔细检查数据库更改.现在登录到admin,我们需要更改数据库中的一些硬编码URL,我通常使用一个名为"Seach and replace"的插件来执行此操作,因此请下载并安装此插件,并通过键入应搜索的内容来使用它(旧网址)以及用(新网址)替换它的内容.

    Search for: http://mysitename.com
    Replace with: (http:)localhost
    
    Run Code Online (Sandbox Code Playgroud)
  2. 现在希望你有多站点的功能迁移.正如我所说,我已经做了几次这样的事情,如果一切正常,它几乎是随机的.我说我用这种方法取得了成功,可能是8次中的6次.

编辑:添加了如何迁移多站点.

  • 或者只使用[Duplicator 插件](https://wordpress.org/plugins/duplicator/),然后跳过所有这些。;-) (2认同)