Je commence juste à me mouiller les pieds avec Nginx. Dans le passé, j’utilisais un fichier .htaccess dans/wp-content/uploads. Par conséquent, si mon serveur de développement ou intermédiaire n'a pas le fichier, il le redirige vers le serveur de production:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wp-content/uploads/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) http://production.server.com/m/wp-content/uploads/$1 [L,P]
</IfModule>
Je n'ai pas de chance avec cela dans nginx. C'est peut-être en partie parce que cette fois-ci, mon site est dans un sous-répertoire (/ m /).
# Tells nginx which directory the files for this domain are located
root /srv/www/example/htdocs;
index index.php;
# Subdirectory location settings
location /m {
index index.php;
try_files $uri $uri/ /m/index.php?$args;
location /m/wp-content/uploads {
try_files $uri $uri/ @prod_svr;
}
}
location @prod_svr {
proxy_pass http://production.server.com/m/wp-content/uploads$uri;
}
Toutes les idées seraient grandement appréciées.
Vous pouvez essayer quelque chose comme ça:
server {
root /srv/www/example/htdocs;
index index.php;
# Matches any URL containing /wp-content/uploads/
location ~ "^(.*)/wp-content/uploads/(.*)$" {
try_files $uri @prod_serv;
}
# Will redirect requests to your production server
location @prod_serv {
rewrite "^(.*)/wp-content/uploads/(.*)$" "http://yourdomain.com/m/wp-content/uploads/$2" redirect;
}
# The rest of your location blocks...
location /m {
index index.php;
try_files $uri $uri/ /m/index.php?$args;
}
}
Si utile à quiconque, j’ai une configuration similaire à celle que j’utilise dans mes environnements WordPress localhost pour gérer cela avec quelques différences utiles:
Voici un exemple de base:
server {
server_name mywebsite.dev;
set $production mywebsite.wpengine.com;
# Redirect requests to /wp-content/uploads/* to production server
location @prod_uploads {
rewrite "^(.*)/wp-content/uploads/(.*)$" "https://$production/wp-content/uploads/$2" break;
}
# Rule for handling requests to https://mywebsite.dev/wp-content/uploads/
location ~ "^/wp-content/uploads/(.*)$" {
try_files $uri @prod_uploads;
}
}
En pratique, j'inclus en fait la règle location ~ "^/wp-content/uploads/(.*)$"
dans un fichier inclus appelé wp-common.conf
. Cela me permet d’exécuter le commutateur $ production sur de nombreux environnements différents avec le même ensemble de règles de configuration WordPress nginx communes.