web-dev-qa-db-ja.com

を動かす WP サブディレクトリへのマルチサイト

第一に、私はこのプロセスに関する 読み取りいくつかの 投稿を持っています。ただし、さまざまな理由から、抽象化された例がない、または抽象化されすぎているために、プロセスの実装やトラブルシューティングが困難なままです。そして「できない」投稿がいくつかありますが、ほとんどの場合「with 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    | /    |
+----+-------------+------+

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

私は曖昧な "update .htaccess適切に"という指示を見つけましたが、具体的ではありません。 RewriteBaseを更新しますか? root.comをroot.com/blogsに移動したときに、どの.htaccessの行が更新されますか?

上記のプロセスから欠けているのは、投稿に見つかったパスです。私がより根本的な更新をした後、私の指導者はそのために検索と置換ツールを使うことです。それとも私は間違っていますか?

更新bungeshea は、そう、私はRewriteBaseを "blogs"サブディレクトリを指すことを示唆しています。

RewriteBase /Blogs

最後に、あなたが http://interconnectit.com/products/search-and-replace-for-wordpress-databases/について知らないのであれば /すべきです。それは素晴らしいです。

19
Screenack

私はそれが古いことを知っていますが、私はそれを修正しました!サブフォルダに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)
6
nicmare

自分の問題を解決したかのように私には見えます - ちょうどあなたのステップ1〜4に従ってください、そしてステップ5のために.htaccessRewriteBaseを更新してください。投稿内のパスを更新するには、 Interconnect ITの滅菌検索と置換 ツールを使用するのが好きです。

2
shea

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

最初にバックアップ!

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についてoptionsテーブルに行き、siteurlとhomeをhttp://www.sitename.com/blognameに変更します。

2)各blog_idのwp_blogsは、ドメインをblogname.domain.comからdomain.comに、そしてパスを/blogname/に変更します。

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

完了したら、(スーパーユーザー管理パネルの)設定>パーマリンクに行き、保存をクリックしてください。

ほら!

1
hot_barbara

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

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

これが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
Ebe

このコードであなたの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]

それでおしまい。

サブディレクトリを持つ新しいサイトを作成する

0
Amran