example.com
をsample.com/?example
にリダイレクトしているため、exampleがsampleに名前を変更したというモーダルポップアップを表示できます。
http://example.com
からのHTTPリダイレクトでは正常に機能し、https://example.com
からのHTTPSリダイレクトではほとんどすべてが機能しますが、次の2つのことを除きます(https://example.com
からのリダイレクトにのみ適用):
アドレスバーでは、https://example.com
と表示されますが、https://sample.com
のページが表示されます。このページでリンクをクリックすると、問題が修正され、アドレスバーにhttps://sample.com
と表示されます。
追加したクエリは保持されません(?example=1
)。
ここに私の。htaccessルールがあります:
RewriteCond %{HTTPS} ^example.com$ [OR]
RewriteCond %{HTTPS} ^www.example.com$
RewriteRule (.*)$ https://www.sample.com/$1?example=1 [R=301,L]
これらを修正してhttps://example.com
にアクセスするとhttps://sample.com?example=1
に移動する方法
完全なHTTPおよびHTTPSリダイレクトを実行するには、.htaccessにさらにディレクティブが必要です。だから、ギャップを埋める...
簡単にするために、他のサブドメイン(www
を除く)はないものと想定しました。したがって、example.com
のすべてをwww.sample.com
にリダイレクトしています。
# Redirect http://example to http://sample
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_Host} example\.com
RewriteRule (.*) http://www.sample.com/$1?example=1 [R=301,L]
# Redirect https://example to https://sample
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_Host} example\.com
RewriteRule (.*) https://www.sample.com/$1?example=1 [R=301,L]
%{HTTPS}
は常に設定され(SSLが有効であるかどうかに関係なく)、単に値 "on"または "off"が含まれます。
RewriteRule
パターンの末尾の$
(パターン終了マーカー)は必要ありません。 RewriteCond
(CondPattern)の2番目の引数は(ほとんどの場合)正規表現であるため、ドットは実際にエスケープする必要があります。