web-dev-qa-db-ja.com

マルチサイトのWordPress nginxアップロードファイルが404を投げる

私は、nginxサーバー上で実行されている/blogサブディレクトリにWordPressサブドメインマルチサイトインストールを持っています。正しくアップロードされてもURLからアクセスできないファイル以外は、すべてうまくいきます。

ファイルに関する設定の一部は次のとおりです。

location ~ ^/files/(.*)$ {
    try_files /blog/wp-content/blogs.dir/$blogid/$uri /blog/wp-includes/ms-files.php?file=$1 ;
    access_log off; log_not_found off; expires max;
}

#avoid php readfile()
location ^~ /blogs.dir {
    internal;
    alias /var/www/example/public_html/blog/wp-content/blogs.dir;
    access_log off; log_not_found off;      expires max;
}

そして

map $http_Host $blogid {
    default       -999;

    #blog
    example.com             1;
    a.example.com           2;
    b.example.com           3;
    c.example.com           4;
}

WordPressサイトには以下の設定があります。

アップロードパス:wp-content/blogs.dir/1/files/

URLのアップロードパス:http://example.com/blog/files

ファイルアップロードURL:http://example.com/blog/files

アップロードパスの番号は、もちろんサイトごとに異なります。

ファイルをいずれかのサイトのブログポストにアップロードしようとすると、それが/blog/wp-content/blogs.dir/#/files/フォルダーに表示されますが、/blog/wp-content/files/test.pngにアクセスしようとすると404がスローされます。

何か案は?ありがとうございます。

2
Philip Seyfi

ファイルをアップロードして新しいWordPress 3.5メソッドに表示する方法をアップグレードすることで、問題を解決しました。

より詳細なチュートリアルは http://halfelf.org/2012/dumping-ms-files/ にありますが、基本的な手順は次のとおりです。

  • 画像をblogs.dir/#/files/から/uploads/sites/#/に移動します
  • WordPressの設定を変更して、/files/ではなく/uploads/sites/#/に見えるようにします。
  • .htaccessまたはあなたのnginx設定ファイルにms-files.php line/sectionを削除します。
  • 各サイトのpostsテーブルを検索/置換し、/files//uploads/sites/#/に変更します
3
Philip Seyfi