web-dev-qa-db-ja.com

マルチサイトに変更した後に誤ったディレクトリにアップロードする画像

既存のサイトをサブドメインのあるマルチサイトに変換しました。整理するためのいくつかの問題がありましたが、1つの例外を除いて、現在はうまく機能しています。

メインサイトの画像は問題なくアップロードされていますが、サブドメインの画像はアップロードされていません。たとえば、次の場所に配置する必要がある画像は、

/public_html/wp-content/uploads/sites/6/2016/08

...で終わっています:

/public_html/wp-content/uploads/sites/6/sites/6/2016/08

エラーは下の #uploaded files 行にあると思いますが、それが何をしているのかわかりません。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?siteN/files/(.+) wp-content/blogs.dir/N/files/$2 [L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

# Redirect to www
RewriteCond %{HTTP_Host} !^www.
RewriteRule ^(.*)$ http://www.%{HTTP_Host}/$1 [R=301,L]

</IfModule>

# END WordPress

FTPを使用してファイルを正しい場所に移動すると、画像はメディアライブラリに表示されるとおりに表示されます。

2
Richard Hare

Site_optionsテーブルのms_files_rewritingオプションの値を確認してください。

Ms_files_rewritingが無効になっている場合、WordPressは自動的に/ sites/numberをサブサイトのそのアップロードパス値に追加します。

WordPress 3.5以降に作成されたマルチサイトネットワークでは、この設定をデフォルトで無効にする必要があります。古いネットワークでのみ有効にする必要があります。

その設定が正しく無効になっている場合は、単にアップロードパスから余分な/ sites/6を削除してください。 WordPressがあなたに代わってそれを追加します。

基本的に、WordPress 3.5では、マルチサイトへのアップロードの保存方法と、それらのアップロードパスオプションの機能が変更されました。この設定は、2つの異なる構成を区別するために存在します。 /blogs.dir/は古いやり方です。新しい方法は、単にそれらを/ wp-content/uploads/sites/numberに入れて、それらのURLに直接リンクすることです。ファイルのRewriteRulesはもう必要ありません。

2
Otto