0

当社のプラットフォームは、複数のドメイン (言語/ブランドごとに 1 つ) からアクセスできます。すべてのドメインについて、強制的にwww. およびhttps:// . これは、次のコードを含む 1 つの .htaccess ファイルで行います。

RewriteEngine On
RewriteBase /

# FIRST WE REDIRECT TO www. IF NOT ALREADY THE CASE
RewriteCond %{HTTP_HOST} ^firstdomain\.com [OR,NC]
RewriteCond %{HTTP_HOST} ^seconddomain\.com [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

# THEN, WE REDIRECT TO https:// IF NOT ALREADY THE CASE
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTP_HOST} ^www\.firstdomain\.com [OR,NC]
RewriteCond %{HTTP_HOST} ^www\.seconddomain\.com [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

1 つの状況を除いて、すべて正常に動作します。

https://seconddomain.comを (www なしで SSL を使用して)直接呼び出すと、証明書エラーが発生します (ドメインが最初に www にリダイレクトされないため、www.* の証明書しかありません)。

ただし、奇妙なことに、この問題はリストの最初のドメインでは発生しません。

https://firstdomain.com -> https://www.firstdomain.comにリダイレクトされます(エラーなし、完璧です!)

これが最初のドメインでのみ機能し、後続のドメインでは機能しないのはなぜですか?

ご協力ありがとうございました!

概要:

WORKS FOR ALL DOMAINS
http://etc -> https://www.etc
http://www.etc -> https://www.etc

WORKS ONLY FOR THE FIRST DOMAIN
https://etc -> https://www.etc
4

2 に答える 2

1

OK、GeoTrust の誰かが、それが機能しない理由について教えてくれました。

www.firstdomain.com で発行された SAN 証明書を使用しています。www.seconddomain.com、www.thirddomain.com などはその代替ドメインです。

無料ボーナスとして、この証明書で firstdomain.com (www なし) が自動的に提供されます。ただし、このメイン ドメインに対してのみ提供され、代替ドメインに対しては提供されません。

これが、https: //firstdomain.com からのリダイレクトが機能し、他のリダイレクトでは機能しない理由です。

それが役立つことを願っています!

于 2013-06-10T09:03:57.227 に答える
0

試す

RewriteCond %{HTTP_HOST} ^firstdomain\.com [NC,OR]

RewriteCond %{HTTP_HOST} ^www\.firstdomain\.com [NC,OR]
于 2013-06-07T14:55:34.923 に答える