2

SSL の強制と WWW の強制の両方を達成するための適切な構文を考え出すのに苦労しています。

編集

各タスクを個別に実行できましたが、2 つを組み合わせると、リダイレクト ループにはまってしまいます。

WWW を強制しない動作構文:

RewriteCond %{HTTP_HOST} !^domain\.com$
RewriteRule (.*) http://domain.com/$1 [R=301,L]

WWW と SSL を強制しないようにする私の試み

RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{HTTP_HOST} !^domain\.com$
RewriteRule (.*) https://domain.com/$1 [R=301,L]

ご提案ありがとうございます。

4

4 に答える 4

1

SSLの場合、次のようなものを使用できます。

Redirect / https://domain.com/

これは、HTTPSではなくHTTP用に構成した仮想ホストのセクションにのみ配置して、クライアントを無限ループに陥らせないようにします。

于 2011-02-07T15:52:46.193 に答える
0

「WWWなし」とは、「WWW」を削除したいという意味だと思います。ホスト名のプレフィックス?これを試して:

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

これを.htaccessファイルで行う場合は、その最後の行を次のように変更します。

RewriteRule "(.*)"         "https://%1/$1"    [R=301,L]

「WWW」を削除できるようにしたい場合。SSL性に関係なくプレフィックスを使用するには、次のことを試してください。

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

RewriteCond "%{HTTP_HOST}" "^(?:www\.)?(.*)"  [NC]
RewriteRule "(.*)"         "http://%1/$1"     [R=301,L]
于 2011-02-07T15:55:47.073 に答える
0

これが私のサイトの 1 つで使用しているものです。これは、私が見た他のほとんどの方法よりも少しうまく機能しているようです。

  # 以下のコードは、セキュアな (ssl/tls) 接続を常に要求するように apache に指示します
  # ウェブサイトへ。クライアントがポート 80 (http://) 経由で接続しようとすると、
  # その後、クライアントは https:// (ポート 443 経由) にリダイレクトされます。
  RewriteCond %{REMOTE_ADDR} !127\.0\.0\.0
  RewriteCond %{SERVER_PORT} 80
  RewriteRule ^(.*)$ https://example.com/$1 [R,L]

www なしのルールについては、Drupal や Wordpress などのオープンソース CMS の .htaccess ファイルをチェックして、いくつかのベスト プラクティスを確認してください。

于 2011-02-07T15:57:45.793 に答える
0

これは、いくつかのクライアント サイトで機能することがわかりました。

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

# Rewrite all http to https
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
于 2014-09-08T15:26:56.053 に答える