1

古いドメインのすべてのページを、新しいドメインのそのドメインに関するページにリダイレクトしようとしています。

以下のコードの最初の3行を使用して、www.mydomain.co.uk以外のものをwww.mydomain.co.ukにリダイレクトする無数のサイトを構築しました。

次の4行で、olddomain.co.ukのすべてのページを新しいドメインwww.currentdomain.co.uk/page-about-olddomainの1つのページにリダイレクトしようとしています。

RewriteCond   %{HTTPS} !=on
RewriteCond   %{HTTP_HOST}   !^www\.currentdomain\.co\.uk$   [NC]
RewriteRule   ^(.*)$   http://www.currentdomain.co.uk/$1  [R=301,L]

RewriteCond   %{HTTPS} !=on
RewriteCond   %{HTTP_HOST}   ^www\.olddomain\.co\.uk$   [NC]
RewriteCond   %{HTTP_HOST}   ^olddomain\.co\.uk$   [NC]
RewriteRule   ^(.*)$  http://www.currentdomain.co.uk/page-about-olddomain  [R=301,L]

私がしたいこと

上記のコードから私が期待するのは、www.olddomain.co.uk/test-pageページがwww.currentdomain.co.uk/page-about-olddomainにリダイレクトされることです

実際に何が起こるか

私が実際に目にしているのは、www.olddomain.co.uk/test-pageがwww.currentdomain.co.uk/test-pageリダイレクトするページです。

これは、2セットのRewriteConds間の競合であると思います

これに関するどんな助けでも私は大いに感謝されるでしょう、そして私は他の人々が同様のことをしたいと思っていると確信しています。

ありがとう

4

2 に答える 2

3

ルールの順序が重要です。それらを入れ替えます-最初のルール(1〜3行目)を2番目の下に移動します。

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.olddomain\.co\.uk$ [NC]
RewriteCond %{HTTP_HOST} ^olddomain\.co\.uk$ [NC]
RewriteRule ^(.*)$  http://www.currentdomain.co.uk/page-about-olddomain [R=301,L]

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} !^www\.currentdomain\.co\.uk$ [NC]
RewriteRule ^(.*)$ http://www.currentdomain.co.uk/$1 [R=301,L]
于 2012-04-10T15:05:41.673 に答える
2

@LazyOneのおかげでルールの順序を入れ替え、 wwwで古いドメインをチェックする最初のRewriteCondの後に[OR]条件を追加することで、この問題を修正しました。

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.olddomain\.co\.uk$   [NC,OR]
RewriteCond %{HTTP_HOST} ^olddomain\.co\.uk$   [NC]
RewriteRule ^(.*)$ http://www.currentdomain.co.uk/olddomain-page [R=301,L]

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} !^www\.currentdomain\.co\.uk$   [NC]
RewriteRule ^(.*)$ http://www.currentdomain.co.uk/$1  [R=301,L]
于 2012-04-11T08:24:16.267 に答える