1

次の2つのことを達成するために、htaccessファイルをセットアップしようとしています:

wwwを削除する必要があります。任意のドメインから すべてのドメインが https を使用していることを確認する必要があります

現在、このファイルは 3 つのドメインを制御していますが、将来的には簡単に数十になる可能性があるため、スケーラブルである必要があります。

この解決策は別の投稿で見つけました

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

しかし、Safari で次のエラーが表示されます。これは、元のページを開くためにリダイレクトされる別のページを開くためにリダイレクトされるページを開く場合に発生する可能性があります。

また、すべての http トラフィックを https にリダイレクトするために、次のコードを見つけました。

RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

しかし、http://example.coにアクセスすると、localhost にリダイレクトされます。

他の何かが関連している場合の完全なコードは次のとおりです!!

<IfModule rewrite_module>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1$1 [R=301,L]
RewriteCond %{REQUEST_URI} !^/css/ [NC]
RewriteCond %{REQUEST_URI} !^/img/ [NC]
RewriteCond %{REQUEST_URI} !^/modules/ [NC]
RewriteCond %{REQUEST_URI} !^/scripts/ [NC]
RewriteCond %{REQUEST_URI} !^/index.php [NC]
RewriteRule .* /index.php [L]
</IfModule>

どんな助けでも素晴らしいでしょう - ありがとう!

4

2 に答える 2

0

他の誰かがこれに出くわした場合に備えて、Web サーバーを再起動すると、上記のコードが実際に機能していました。なぜそれが必要だったのかはわかりませんが、すべてが機能するようになりました!

于 2013-07-25T20:34:01.007 に答える
0

これと同じ問題があり、htaccess またはサイト対応の書き換えを使用して解決策を見つけることができませんでした。

代わりに、Letsencrypt はワイルドカードを許可していませんが、同じドメインの複数のバリアントをリストする証明書を提供することを知りました。

証明書を管理するためのツールである certbot を実行する場合、「-d mydomain.com -d www.mydomain.com」を certbot の証明書生成コマンドに追加するだけで、www と www の両方を処理する単一の SSL 証明書が生成されます。問題なくベアバリアント。それについて考えると、この方法を使用してさまざまなサブドメインに対して単一の証明書を作成できるように思われますが、これを確実に言うには十分ではありません.

htaccess ファイルなどを編集してこれを機能させることは不可能であることがわかりました。別の場所で説明した理由により、.htaccess またはサイト対応の conf ファイルにアクセスするには、SSL 検証の要件を通過する必要があると思います。

これと格闘して数日を過ごした後、私は Letsencrypt の Web サイトからこの問題を解決できたことを非常にうれしく思いました。ただし、数週間または数か月以内に、Letsencrypt がワイルドカード証明書を提供することを期待しています。

于 2018-06-21T18:41:09.913 に答える