私はマルチサイトのWordPressインストール( - https://codex.wordpress.org/Create_A_Network を参照)で作業していますが、自分のローカル環境でサイトをテストするためにすべてのリモートプロダクションイメージをダウンロードする必要はありません。
次の.htaccessを書き換える例では、ライブのWordPressサイトから直接画像を取得することができます。
RewriteCond %{REQUEST_URI} ^/wp-content/uploads/[^\/]*/.*$
RewriteRule ^(.*)$ http://example.com/$1 [QSA,L]
- https://css-tricks.com/develop-locally-use-images-production/ を参照してください。これは通常のスタンドアロンWordPressのインストールについての説明です。
Multisiteインストール、つまり異なるドメイン上の複数のWordPressブログに対応するようにこれを調整することはできますか?
私は特定のローカルサブドメインへのリクエストをマッピングするために次のことを試みましたが、成功しませんでした。
RewriteCond %{HTTP_Host} ^local\.example\.com/wp-content/uploads/[^\/]*/.*$
RewriteRule ^(.*)$ http://www.example.com/$1 [QSA,L]
以下の
.htaccess
は、例を書き直すために...RewriteCond %{REQUEST_URI} ^/wp-content/uploads/[^\/]*/.*$ RewriteRule ^(.*)$ http://example.com/$1 [QSA,L]
念のために...これは 外部リダイレクト (R=302
がRewriteRule
ディレクティブに含まれているかのように)になります。(R
フラグがなくても)(単に推奨されるような)書き換えではありません。そのため、ブラウザはuploadsディレクトリ内のすべてのリソースに対して2つのリクエストを発行します。これはローカルのテスト環境で(あなたが行っているように)開発している間は大丈夫かもしれませんが、外部リソースがたくさんあると文字通りあなたのサイトを停止させる可能性があるので本番では決してしないでしょう。 (これを正しく行うには、あなたのサーバをリバースプロキシとして設定し、mod_proxyを使ってリクエストを「プロキシ」する必要があります。)
RewriteRule
置換 に絶対URL(つまりscheme + hostnameを使用)を指定した場合、Apacheは暗黙的に外部リダイレクトを起動します。
上記を特定のドメイン(例:local.example.com
)をターゲットにするには、Host
ヘッダーをチェックする追加の条件を追加するだけです。例えば:
RewriteCond %{HTTP_Host} ^local\.example\.com
RewriteCond %{REQUEST_URI} ^/wp-content/uploads/[^/]+/
RewriteRule (.*) http://example.com/$1 [R,QSA,L]
上記についてのいくつかの注意:
(.*)
は^(.*)$
と同じです - アンカーは不要です。.*$
(これは単にURLの末尾の なんでも に一致します)は不要です。[^/]
は[^\/]
と同じです。[^/]+
の代わりに[^/]*
。R
を追加しました。実際に何が起こっているのかを明確にするためです。しかし、実際にはREQUEST_URI
と一致する2番目のRewriteCond
は必要ありません。 RewriteRule
pattern が最初に処理されるので、これをRewriteRule
pattern に移動する方が効率的です。たとえば、上記のように書き換えることができます。
RewriteCond %{HTTP_Host} ^local\.example\.com
RewriteRule ^wp-content/uploads/[^/]+/ http://example.com%{REQUEST_URI} [R,QSA,L]