私は足をnginxで濡らしています。以前は/ wp-content/uploadsで.htaccessファイルを使用していましたので、私の開発サーバーまたはステージングサーバーにそのファイルがない場合は、本番サーバーにリダイレクトします。
<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>
私はnginxでこれをやっても運がありません。私のサイトはサブディレクトリ(/ 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;
}
どんなアイデアでも大いに評価されるでしょう。
あなたはこのようなことを試すことができます:
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;
}
}
誰にとっても便利な場合、WordPress localhost環境で使用する同様のセットアップを使用して、これをいくつかの有用な違いで処理します。
基本的な例を次に示します。
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;
}
}
実際には、wp-common.conf
というインクルードファイル内にlocation ~ "^/wp-content/uploads/(.*)$"
ルールを実際に含めます。これにより、同じWordPress nginx構成ルールのセットを使用して、さまざまな環境で$ productionスイッチを実行できます。