WPマルチサイトをサブディレクトリに移動する


20

まず、このプロセスに関する多くの投稿を読みまし 。ただし、さまざまな理由により、抽象化された例でさえ、または抽象化されすぎていても、プロセスを実装またはトラブルシューティングするのは困難なままです。そして、いくつかの「できない」投稿があり、ほぼ常に「3.5で、今できる」という警告があります。

概要:

ワードプレスマルチサイト(WPMS)をroot.comからroot / blogsに移動する方法は?

この例では、WPMSを「root.com」から「root.com/blogs」に移動します

データベースとwp-config.phpのパスを適切に更新する必要があることを理解しています。.htaccessも更新する必要があるようです。また、検索/置換およびmysqlクエリの更新に伴うシリアル化の問題も認識しています。

3.5に更新したWPMSがあります。ドメインとパス情報を含む次のテーブルを見つけました

サブディレクトリに移動する前の既存の作業構成

1. wp_blogs

select blog_id, domain, path from wp_blogs;
+---------+-------------+--------+
| blog_id | domain      | path   |
+---------+-------------+--------+
|       1 | root.com    | /      |
|       2 | root.com    | /matt/ |
+---------+-------------+--------+

2. wp_site

select * in wp_site;
+----+-------------+------+
| id | domain      | path |
+----+-------------+------+
|  1 | root.com    | /    |
+----+-------------+------+

3. blog_idは、次を含むwp _#_ optionsテーブルに対応します。

select option_name,option_value from wp_2_options 
where option_name = 'home' or option_name = 'siteurl';
+-------------+--------------------------+
| option_name | option_value             |
+-------------+--------------------------+
| home        | http://root.com/matt/    |
| siteurl     | http://root.com/matt/    |
+-------------+--------------------------+

4. wp-config.phpには、次のWPMS固有の行があります。

define('WP_ALLOW_MULTISITE', true);
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', false);
$base = '/';
define( 'DOMAIN_CURRENT_SITE', 'root.com' );
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );

5.最後に、私の.htaccessには次のものがあります。

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [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).*) $1 [L]
RewriteRule  ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

サイトの移動に必要な更新

私のサイトを/ blogsに移動するには、次のようにします。

1. wp_blogsを更新します

mysql> update wp_blogs set domain=concat(domain, '/blogs'), path=concat(path, 'blogs/');
select blog_id, domain, path from wp_blogs where blog_id < 3;
+---------+-------------+--------------+
| blog_id | domain      | path         |
+---------+-------------+--------------+
|       1 | root.com    | /blogs/      |
|       2 | root.com    | /blogs/matt/ |
+---------+-------------+--------------+

2. wp_siteを更新します

update wp_site set domain=concat(domain, '/blogs'), path=concat(path, 'blogs/');
select * from  wp_site;
+----+-------------+------------+
| id | domain      | path       |
+----+-------------+------------+
|  1 | root.com    | /blogs/    |
+----+-------------+------------+

3. wp _#_ options

+-------------+--------------------------------+
| option_name | option_value                   |
+-------------+--------------------------------+
| home        | http://root.com/blogs/matt/    |
| siteurl     | http://root.com/blogs/matt/    |
+-------------+--------------------------------+

4. wp_config.php

define('WP_ALLOW_MULTISITE', true);
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', false);
$base = '/blogs/';
define( 'DOMAIN_CURRENT_SITE', 'root.com' );
define( 'PATH_CURRENT_SITE', '/blogs/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );

注:この手順がどのように適切に更新されるか明確ではありません

5. .htaccess

「.htaccessを適切に更新する」というあいまいな指示を見つけましたが、詳細は指示しませんでした。RewriteBaseを更新しますか?root.comをroot.com/blogsに移動すると、.htaccessのどの行を更新しますか?

上記のプロセスから欠落しているのは、投稿で見つかったパスです。もっと基本的な更新を行った後、私の代わりに検索と置換ツールを使用します。または私は間違っていますか?

Update bungesheaは、はい、RewriteBaseを "blogs"サブディレクトリにポイントすることを提案しています。つまり、

RewriteBase /Blogs

最後に、http://interconnectit.com/products/search-and-replace-for-wordpress-databases/について知らない場合は、すべきです。素晴らしいです。


3
素晴らしい質問、素晴らしいプロセス+1
kaiser

1
私だけでしょうか?私は、プロセス内のクエリが正しくない、と考えるupdate wp_blogs set domain=concat(domain, '/blogs'), path=concat(path, 'blogs/'); というべきであるupdate wp_blogs set path=concat('/blogs',path);
MR

回答:


7

私はそれが古いことを知っていますが、私はそれを修正しました!WP MUをサブフォルダーにインストールしました。 htaccess

RewriteEngine On
RewriteBase /YOUR_SUBFOLDER
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 ^(.*\.php)$ YOUR_SUBFOLDER/$1 [L]
RewriteRule . index.php [L]

wp-config.php

define( 'WP_ALLOW_MULTISITE', true ); 
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'localhost'); // or your host
define('PATH_CURRENT_SITE', '');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

データベースで、これを変更します。

wp_site
domain: localhost (OR your domain but no subdirectory!)
path: /

wp_blogs
domain: localhost (OR your domain but no subdirectory in each blog_id!)
path: /

wp_sitemeta
siteurl: http://localhost/YOUR_SUBFOLDER (replace localhost with your host)

これは非常に役に立ちました。サブドメインのインストールと、データベースのダンプとサイトのzipがありました。新しいサーバーに復元する必要があり、手動でサイトを更新する必要がありました。データベースの更新は、私が行う必要がある最も重要なものでした。ありがとうございました!
ジェイコブラクシア

2

私はあなた自身の問題を解決したかのように見えます-手順1〜4に従うだけで、手順5ではRewriteBaseinを更新し.htaccessます。投稿内のパスを更新するには、Interconnect IT滅菌の検索と置換ツールを使用するのが好きです。


ありがとう、ブンシア。投稿で示したように、RewriteBaseを上記の例のとおりに正確に更新しますか?RewriteBase / blogでしょうか?
スクリーンバッグ

はい:RewriteBase /blog
シア

ブンシア; 完了しましたが、まだ機能していません。上記のすべてを実行しても、引き続き「データベース接続の確立エラー」が発生します。さらに悪いことに、Apacheエラーログにエラーはスローされません。
スクリーンバッグ

@Screenack「データベース接続の確立エラー」の詳細は何ですか?ヒント:訪問wp-admin
シア

1

OKここで私がやったことがあり、これはうまくいきました。サブフォルダーはありません。サイトは以前にサブドメインに構成されていました。

バックアップを最初に!!!

wp-config.php(このブロックをファイル内のブロックに置き換えます)

define('WP_ALLOW_MULTISITE', true ); 
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'no-www-in-sitename.com'); // your host
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

.htaccess

RewriteEngine On
RewriteBase /
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]

今、SQL DBで:

1)wp_(site#)_ tablesuffixごとにオプションテーブルに移動し、siteurlとhomeを変更します http://www.sitename.com/blogname

2)各blog_idのwp_blogsは、ドメインをblogname.domain.comto domain.comからpathに変更します/blogname/

3)インストールが同じ場所にある場合、wp_options siteurl&homeまたはwp_siteまたはwp_sitemetaのセルを変更する必要はありません。

完了したら、必ず(スーパーユーザー管理パネルで)[設定]> [パーマリンク]に移動し、[保存]をクリックしてください。

出来上がり!


0

これが私の最初の回答ですので、ご注意ください!:)

変換するサブドメインにすでにあるブログはありませんでした。しかし、古いブログであり、サブディレクトリのブログを作成することはできなかったため、戦わなければなりませんでしたし、WPがコードを提供するまでにWPが私のデータベースに変更を加えることを恐れました。

これが2018年4月に私のために働いたものです... hot_barbaraのwp-configを使用し、彼らからも.htaccessを使用しました。

したがって、サブフォルダーを探してはいけません-私はしませんでした!

しかし、SQL DBでは、これは私の場合に起こったことです-それはすべてすでにこのようだったので、私は変更を加えませんでした:

  1. wp_siteドメイン:xyzabc.comパス:/

wp_blogsドメイン:xyzabc.comパス:/

wp_sitemeta siteurl:h ** ps://xyzabc.com/

私が理解しているように、設定に末尾のスラッシュが含まれている場合は、末尾のスラッシュを使用します。


0

wp-config.phpこのコードであなたを書き直してください

define('SUBDOMAIN_INSTALL', false);

の代わりに define('SUBDOMAIN_INSTALL', true);

その後:

http://www.website.com/wp-admin/network/setup.php

その後:

/var/www/vhosts/website.com/の.htaccessファイルに次を追加し、他のWordPressルールを置き換えます。

RewriteEngine On
RewriteBase /
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]

それでおしまい。

サブディレクトリを使用して新しいサイトを作成する

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.