WP 3.5以前に開始されたWPネットワーク(ドメインマッピングあり)があるため、メディアファイルの保存にms-files.php
およびwp-content/blogs.dir/
を使用していました。私はms-files.php
依存関係を削除したいと思いました、そして何らかの研究をした後にプロセスを始めました:
私は最初に 移動 blogs.dir/#/files
からuploads/sites/#
へのファイルの移動を試みませんでしたが、そのためのシンボリックリンクを設定しました。それから私はblogs.dir/#/files
からuploads/sites/#
にすべてをコピーしたので、私はいくつかのパーミッション問題を抱えていました。
その後、各サイトのupload_path
、upload_url_path
、およびfileupload_url
の値を消去しました。
そして最後にms_files_rewriting = 0
テーブルのwp_sitemeta
を更新/挿入しました。
また、DB内のすべてのURLを更新する必要がないように、いくつかの書き換え規則を.htaccess
ファイルに追加しました。
私たちの設定のメインブログIDは2で、デフォルトの1ではありません:define('BLOG_ID_CURRENT_SITE', 2);
私の知る限り、そしてwp_upload_dir()
に見られるものに基づいて、WPはメインのブログコンテンツのためにuploads
フォルダーのルートを使い、他のブログのためにuploads/sites/#
を使います。だから私はblogs.dir/2/files
からuploads
フォルダのルートにコピーし、uploads/sites/2
にはコピーしていません。
これがMAIN BLOGのメディアファイルの問題です。バックエンドでは、WPはuploads
フォルダからファイルをロードしますが、フロントエンドではuploads/sites/2
からファイルをロードしようとします。存在せず、奇妙です!
シモンズ:私はこれを直すために別の書き換え規則を追加することができますが、/sites/2
がメインのブログに追加された理由を本当に知りたいのです。
WordPressマルチサイトの「アップロードパス」はサーバー相対パス(例:/home/serveraccountname/public_html/wp-content/uploads
)に設定されるべきです。
"Upload URL Path"はURI(例えばhttp://example.com/wp-content/uploads
)であるべきです。
サブサイトの/sites/1/
フラグメントを無視する - WordPressはこれらを自動的に追加します。
以前はファイルが保存されていたディレクトリを設定できるようになり、そのオプションは削除されたため、誤ったリンクと関係があるかもしれません。私は同じ問題を抱えていました、しかし私は調べて、正しく働いていなかったファイルを再アップロードしました。たくさんのファイルがある場合、これは現実的ではないかもしれませんが、それは1つの選択肢です。もう一つのオプションは Broken Link Checker Janis Elstsによる/のようなプラグインを使うことです。機能しないリンクをサイトで検索し、URLを簡単に変更することができます。それはまたあなたに電子メールを送り、リンクに接続されている他のサイトが機能しなくなったかどうかを教えてくれます。それは非常に便利で、私は今私のウェブサイトのほとんどでそれを使用しています。 ^^