3

私のアプリケーションは Ubuntu でホストされている Apache で実行されており、次のリダイレクトが機能するようにします。

1> http://example.com       -> https://www.example.com
2> http://www.example.com   -> https://www.example.com
3> https://example.com      -> https://www.example.com

デフォルトのApache構成ファイルで次の行を使用しています:

RewriteEngine on
RewriteCond %{HTTP_HOST}   !^$
RewriteRule ^/?(.*)         https://www.example.com/$1 [L,R]

このように、最初の 2 つのリダイレクトは正常に機能しますが、3 番目のリダイレクトは機能しません。3つ目は可能ですか?はいの場合、どのように?

ありがとう。

4

2 に答える 2

4

仮想ホストに着信するすべてのトラフィックをポート 443 に送信するサイトがあります。ポート 80 リダイレクトの仮想ホスト定義を次のように設定しました。

RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/?(.*)         https://www.example.com/$1 [L,R]

これにより、ポート 80 に着信するすべてのトラフィックが 443 にリダイレクトされます。

ServerName と ServerAlias が正しく設定されていることを確認してください。この例では、次のようになります。

<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias *.example.* example.* example.com

    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_METHOD} ^TRACE
        RewriteRule .* - [F]
        RewriteCond %{REQUEST_METHOD} ^TRACK
        RewriteRule .* - [F]

        #redirect all port 80 traffic to 443
        RewriteCond %{SERVER_PORT} !^443$
        RewriteRule ^/?(.*) https://www.example.com/$1 [L,R]
    </IfModule>

</VirtualHost>

この後、443 仮想ホストの定義もセットアップします (ポートの書き換えセクションを除く)。

于 2013-01-23T14:26:12.330 に答える