web-dev-qa-db-ja.com

Wordpressのマルチサイトhtaccessによる新しいドメインへのリダイレクト

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_id2ではなく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]

しかし、それでも間違ってリダイレクトしています。

2
Gani Siva kumar
RewriteCond %{HTTP_Host} ^site.olddomain.com/wp-content/uploads/sites/2$

HTTP_Hostサーバー変数には、ホスト名(Host HTTP要求ヘッダーの値)のみが含まれています。 URLパスが含まれていないため、上記の condition は決して一致しません。

しかし、新しいドメインのsite_idは2です。

しかし、あなたのディレクティブは反対のことをしようとしているようです... 2site.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]

いくつかのメモ:

  • パターン の中のドットをエスケープすることを忘れないでください(あなたは他のものではなくいくつかをエスケープしました)。
  • CondPattern の末尾の$は、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
0
MrWhite