Opened 12 years ago
Last modified 7 years ago
#23483 new defect (bug)
Incorrect image URL for subsites when using UPLOADS constant on multisite subdirectory installation
Reported by: | creativeinfusion | Owned by: | |
---|---|---|---|
Milestone: | Awaiting Review | Priority: | normal |
Severity: | normal | Version: | 3.5.1 |
Component: | Upload | Keywords: | needs-patch |
Focuses: | multisite | Cc: |
Description (last modified by )
If the UPLOADS constant is used on a Wordpress Multisite installed to subdirectory, using subdirectory mode, then image URLs for subsites are incorrect.
Example:
- WP MS installed to www.domain.com/wordpress, subdirectory not subdomain
- UPLOADS set to 'assets'
Main site uploads images to /wordpress/assets/...
Main site image URL is www.domain.com/wordpress/assets/...
- Create subsite called 'subsite';
- Subsite uploads images to /wordpress/assets/sites/2/...
- Subsite image URL is www.domain.com/subsite/assets/sites/2/... when it should be www.domain.com/assets/sites/2/...
This is because wp_upload_dir() uses get_option('siteurl') to derive the URL. It is probably right for subdomain multisite but wrong in this use case.
Change History (12)
#4
@
12 years ago
Typo correction to point 3 (can't edit it myself)
Should read
- Subsite image URL is www.domain.com/subsite/assets/sites/2/... when it should be www.domain.com/assets/sites/2/...
#5
@
12 years ago
Apologies, the tentative fix is too specific to the UPLOADS use case.
The site url is also used to deduce the url:
- if upload_path option is specified and upload_url_path is not (this would also need a fix).
- for old ms_files rewriting (probably does not need a fix).
#6
@
12 years ago
Sorry about all the updates, but it's just dawned on me that the URL is set how it is by design, because in the absence of UPLOADS being used the subsite uploads url is just rewritten by
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*)
That rewrite doesn't handle the situation in this ticket when the UPLOADS folder is outside wp-content, making it similar to the reason behind the warning Subdirectory networks may not be fully compatible with custom wp-content directories
(if I understand that correctly).
#8
@
12 years ago
This boils down to the URL being correct but the rewrite not supporting this situation.
As UPLOADS is always relative to ABSPATH, the fix for this would be to detect when uploads is not inside wp-content.
Entirely reasonable for this to solved with a manual rewrite edit, but maybe we should have an additional warning?
#12
@
7 years ago
This issue surfaced four years ago, but I'm experiencing @creativeinfusion's issue now in 2017. Following all the references above, it's unclear to me what the solution was.
The site subdirectory in multisite is present in the attachment url when a custom UPLOADS directory is specified. The upload succeeds, but the attachment url is incorrect and hence attachments fail to load.
---
Update
After trying a host of other functions and filters to remedy the problem, what worked for me was making no UPLOADS declaration in wp-config.php and simply this in functions.php:
update_option( 'upload_path', ABSPATH.'/media' );
update_option( 'upload_url_path', network_home_url('/media') );
Tentative fix - check if multisite and not using subdomain install and use network_site_url instead