Am de făcut ceva mentenanță la un site pe WP, iar wp-content/uploads
are peste 20Gb (exagerat de multe imagini, pdf-uri, zip-uri etc). Pentru că nu are sens să țin toate aceste fișiere în trei locuri, am căutat o soluție rapidă pentru a rezolva cumva treaba asta. Plecând de la premisa că folosim Apache, am găsit două variante:
1. Redirect
În vhost
se adaugă:
<VirtualHost *:80>
Redirect permanent "/wp-content/uploads/" "http://live-url/wp-content/uploads/"
Două probleme:
- trebuie să editezi vhost, restart apache. Nimic grav, dar e enervant;
- ORICE este în
wp-content/uploads
va fi redirectat. Asta e grav pentru că nu vei putea face teste (chiar dacă fișierele există local, vei primi 404, pentru că nu există pe server).
2. RewriteRule
În wp-content/uploads
(stage și dev) faci un .htaccess
:
# END WordPress
RewriteEngine On
RewriteBase /wp-content/uploads/
# dacă fișierul cu acest nume nu există
RewriteCond %{REQUEST_FILENAME} !-f
# dacă directorul cu acest nume nu există
RewriteCond %{REQUEST_FILENAME} !-d
# se face rewrite pe URL-ul de live
RewriteRule (.*) http://live-url/wp-content/uploads/$1 [L]
Cele două probleme înșirate mai sus nu mai există și nici nu am găsit alte probleme.
Cred că ar fi util dacă există vreun nginx guru pe aici, să ne spună cum s-ar face asta și pe celălalt server