web-dev-qa-db-fra.com

Multisite WordPress nginx téléchargé des fichiers jettent 404

J'ai une installation multisite de sous-domaine WordPress dans le sous-répertoire /blog s'exécutant sur un serveur nginx. Tout fonctionne bien sauf les fichiers qui sont chargés correctement mais qui ne sont pas accessibles via leur URL.

La partie de la configuration concernant les fichiers est:

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;
}

et

map $http_Host $blogid {
    default       -999;

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

Les sites WordPress ont les paramètres suivants:

Chemin de téléchargement: wp-content/blogs.dir/1/files/

Upload Url Path: http://example.com/blog/files

URL de chargement de fil: http://example.com/blog/files

Le nombre dans le chemin de téléchargement est bien sûr différent pour chaque site.

Lorsque j'essaie de télécharger un fichier sur n'importe quel blogpost de l'un des sites, il apparaît dans le dossier /blog/wp-content/blogs.dir/#/files/, mais si j'essaie d'accéder à /blog/wp-content/files/test.png, il génère une erreur 404.

Des idées? Merci!

2
Philip Seyfi

J'ai résolu le problème en mettant à niveau la manière dont les fichiers sont téléchargés et affichés dans la nouvelle méthode WordPress 3.5.

Un tutoriel plus détaillé peut être trouvé à http://halfelf.org/2012/dumping-ms-files/ mais les étapes de base sont les suivantes:

  • Déplacez les images de blogs.dir/#/files/ à /uploads/sites/#/
  • Changer les paramètres de WordPress pour qu'il ne soit pas dans /files/ mais dans /uploads/sites/#/
  • Dans .htaccess ou votre fichier de configuration nginx, supprimez la ligne/section ms-files.php
  • Rechercher/remplacer la table des publications pour chaque site, en remplaçant /files/ par /uploads/sites/#/
3
Philip Seyfi