RewriteCond %{HTTP_Host} ^site.olddomain.com$ [OR]
RewriteCond %{HTTP_Host} ^www\.site.olddomain\.com$
RewriteRule ^(.*)$ https://site.newdomain.com/$1 [R=301,L]
すべての投稿のURLは正常にリダイレクトされています。しかし、問題は私の古いマルチサイトsite_id
が新しいマルチサイトsite_id
と違うことです。
したがって、すべてのsite.olddomain.com/wp-content/uploads/sites/7/..
はsite.newdomain.com/wp-content/uploads/7/..
にリダイレクトしています。
しかし、新しいドメインのsite_id
は2
ではなく7
です。
私はこれを試しました
RewriteCond %{HTTP_Host} ^site.olddomain.com/wp-content/uploads/sites/2$
RewriteRule ^(.*)$
https://site.newdomain.com/wpcontent/uploads/sites/7/$1 [R=301,L]
RewriteCond %{HTTP_Host} ^site.olddomain.com$ [OR]
RewriteCond %{HTTP_Host} ^www\.site.olddomain\.com$
RewriteRule ^(.*)$ https://site.newdomain.com/$1 [R=301,L]
しかし、それでも間違ってリダイレクトしています。
RewriteCond %{HTTP_Host} ^site.olddomain.com/wp-content/uploads/sites/2$
HTTP_Host
サーバー変数には、ホスト名(Host
HTTP要求ヘッダーの値)のみが含まれています。 URLパスが含まれていないため、上記の condition は決して一致しません。
しかし、新しいドメインのsite_idは2です。
しかし、あなたのディレクティブは反対のことをしようとしているようです... 2
のsite.olddomain.com
をチェックし、新しいドメインの7
にリダイレクトしますか? (しかし、あなたの他のサイトはどうですか?)
RewriteRule ^(.*)$ https://site.newdomain.com/wpcontent/uploads/sites/7/$1 [R=301,L]
wpcontent
?のハイフン(-
)も省略したようです。
あなたはこの特定のリダイレクトを次のようなintseadのように書く必要があります:
RewriteCond %{HTTP_Host} ^site\.olddomain\.com [NC]
RewriteRule ^(wp-content/uploads/sites)/2/(.*) https://site.newdomain.com/$1/7/$2 [R=301,L]
いくつかのメモ:
$
は、FQDNをキャッチするためにHTTP_Hostと照合して省略されています(ドットで終わります)。NC
ディレクティブにRewriteCond
フラグを追加しました。これは本当に不正な要求を捕らえるためだけのものです(すべての ブラウザ は要求内の hostname を小文字にします)。RewriteCond %{HTTP_Host} ^site.olddomain.com$ [OR] RewriteCond %{HTTP_Host} ^www\.site.olddomain\.com$
これら2つのRewriteCond
ディレクティブは、単にwww.
部分を オプション にすることで、1つにまとめることができます。
RewriteCond %{HTTP_Host} ^(www\.)?site\.olddomain\.com