[resolved] How to change upload directory of main site to blogs.dir (11 posts)

  1. digitalawakening
    Posted 6 years ago #

    I'm working on a WordPress 3.0 multisite aka network install on my dev machine (OS X, MAMP stack, svn checkout from http://core.svn.wordpress.org/tags/3.0). I'm confused about the differences between the upload directory for the main site of a network install, and additional sites.

    For instance, in a fresh install that I just tried, uploading an image to the main (first) site gives me a path like this:


    ...and indeed, the image is in wp-content/uploads/2010/07.

    Uploading an image to an additional (the second) site gives me a path like this:


    ...and of course the image is in blogs.dir/2/files/2010/07.

    What I would like to do is change the behavior of the primary/first blog to be like that of the secondary blogs - files are uploaded to blogs.dir, but the paths are the nice, more secure, rewritten /files versions. When I change the Upload Path for the primary blog (in Super Admin > Sites > Edit) to wp-content/blogs.dir/1/files, subsequent media uploads go to the proper subdirectory of blogs.dir, however the path in the uploader (and therefore the resulting img src) is not the nice rewritten /files path.

    E.g. after changing upload_dir on the primary blog, the source of an uploaded image is:

    And I would like it to be:

    Is this possible?


  2. Should be. Edit the Fileupload Url to http://domain.com/files

  3. digitalawakening
    Posted 6 years ago #

    Poking around in the core WordPress code a bit, I can see that in wp-includes/functions.php, in the wp_upload_dir function, line 2156 is where the replacement happens - where /wp-content/blogs.dir/1/files/2010/07/image.jpg becomes /files/2010/07/image.jpg

    $url = str_replace( UPLOADS, 'files', $url );

    This is within an if statement that's only true if it's not the main site. What's the reason for this?

  4. digitalawakening
    Posted 6 years ago #

    Hi ipstenu,

    Thanks for the reply. I tried that, but it has no effect (the behavior is the same). From some other threads in the forum I got the impression that fileupload_url isn't used anymore.

  5. Edit the upload path as well? And did you copy the files over to the new spot?

  6. digitalawakening - That may be. I changed both that AND the upload path and URL and it's working fine for me after I moved.

    I also did an .htaccess tweak to point old images:

    # Moved Images
    RewriteRule ^wp-content/uploads/(.*)$ http://domain.com/wp-content/blogs.dir/1/files/$1 [L,R=301]
  7. digitalawakening
    Posted 6 years ago #

    Aha! Thank you very much, Andrea_r and ipstenu. The "Upload Url Path" option was the key. I had already moved the files over to the new spot. So, for others reading this post and wanting to accomplish the same thing, make sure you:

    1. Move the files over to the new location (or add a the RewriteRule as ipstenu did)
    2. Go to Super Admin > Sites, hover over the primary blog and click Edit
    3. Change "Upload Path" to wp-content/blogs.dir/1/files
    4. Change "Upload Url Path" to /files
    5. Change "Fileupload Url" to http://domain.com/files
  8. I would both move the files AND apply the .htaccess fix. What my change does is say "If you come to wp-content/uploads, go over to blogs.dir instead, k'thnx'bye."

  9. jbroglie
    Posted 6 years ago #

    Hey guys, thanks for you responses to this issue. I don't have a ton of understanding of WPMS, and I am having a similar problem.

    I want my subsite users (which are configured as subdomains) to be able to upload, but when I created a test account and tried to upload an image, it says:

    Unable to create directory /hermes/bosweb/web294/b2941/ipg.utv13/wp-content/blogs.dir/2/files/2010/08. Is its parent directory writable by the server?

    I set the permissions to 755 of blogs.dir, just like wp-content. I don't understand though how something could upload to a subdirectory of blogs.dir, because it isn't a folder, right?

    Another question of mine:
    Is it possible to make The Loop in my main blog spit out posts from all the blogs in my network?

  10. jbroglie
    Posted 6 years ago #

    Ahhh hahah I see now. I thought 'blogs.dir' was supposed to be a text file. I created the directory and now it works fine.

    The second question is still up for grabs though! Thanks in advance.

  11. there is no loop function for that. use a plugin.


Topic Closed

This topic has been closed to new replies.

About this Topic