web-dev-qa-db-ja.com

HTTPSリダイレクトが.htaccess RewriteRuleに従っていないようです。これを修正するにはどうすればよいですか?

example.comsample.com/?exampleにリダイレクトしているため、examplesampleに名前を変更したというモーダルポップアップを表示できます。

http://example.comからのHTTPリダイレクトでは正常に機能し、https://example.comからのHTTPSリダイレクトではほとんどすべてが機能しますが、次の2つのことを除きます(https://example.comからのリダイレクトにのみ適用):

  1. アドレスバーでは、https://example.comと表示されますが、https://sample.comのページが表示されます。このページでリンクをクリックすると、問題が修正され、アドレスバーにhttps://sample.comと表示されます。

  2. 追加したクエリは保持されません(?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に移動する方法

2
lawdawg

完全な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パターンの末尾の$(パターン終了マーカー)は必要ありません。 RewriteCondCondPattern)の2番目の引数は(ほとんどの場合)正規表現であるため、ドットは実際にエスケープする必要があります。

2
MrWhite