Apacheサーバーはデフォルトドメインをhttpsにリダイレクトします。

Apacheサーバーはデフォルトドメインをhttpsにリダイレクトします。

私のサーバーには、CentOS 6.2とApacheを実行している複数のドメインがあります。サーバーにSSL証明書がインストールされ、正常に実行されています。

http://プライマリドメインに移動するたびに、そのセクションを表示するためにドメインを追加しませんhttps

たとえば、

入力すると、代わりにページがmydomain.com 表示されます。httpsprivate_html/index.htmlpublic_html/index.html

入力http://mydomain.comしたりhttp://www.mydomain.com 正しいページが表示された場合public_html/index.html

入力https://mydomain.comしたりhttps://www.mydomain.com 正しいページが表示された場合private_html/index.html

問題は、httporhttps部分を省略すると常にその部分が出てくることですhttps。私はその反対が欲しい。httpsApacheが行きたいときではなく、行きたいときに行きます。

原因は何ですか?

私のhttpd.confドメイン名です

<VirtualHost 100.101.102.103:80 >
        ServerName www.mysite.com
        ServerAlias www.mysite.com mysite.com
        ServerAdmin [email protected]
        DocumentRoot /home/admin/domains/mysite.com/public_html
        ScriptAlias /cgi-bin/ /home/admin/domains/mysite.com/public_html/cgi-bin/

        UseCanonicalName OFF

        <IfModule !mod_ruid2.c>
                SuexecUserGroup admin admin
        </IfModule>
        <IfModule mod_ruid2.c>
                RMode config
                RUidGid admin admin
                RGroups apache access
        </IfModule>

        CustomLog /var/log/httpd/domains/mysite.com.bytes bytes
        CustomLog /var/log/httpd/domains/mysite.com.log combined
        ErrorLog /var/log/httpd/domains/mysite.com.error.log
        <Directory /home/admin/domains/mysite.com/public_html>
                Options +Includes -Indexes
                php_admin_flag safe_mode OFF
                php_admin_flag engine ON
                php_admin_value sendmail_path '/usr/sbin/sendmail -t -i -f [email protected]'

                php_admin_value open_basedir /home/admin/:/tmp:/var/tmp:/usr/local/lib/php/
        </Directory>
</VirtualHost>


<VirtualHost 100.101.102.103:443 >
        SSLEngine on
        SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
        SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key

        ServerName www.mysite.com
        ServerAlias www.mysite.com mysite.com
        ServerAdmin [email protected]
        DocumentRoot /home/admin/domains/mysite.com/private_html
        ScriptAlias /cgi-bin/ /home/admin/domains/mysite.com/public_html/cgi-bin/

        UseCanonicalName OFF

        <IfModule !mod_ruid2.c>
                SuexecUserGroup admin admin
        </IfModule>
        <IfModule mod_ruid2.c>
                RMode config
                RUidGid admin admin
                RGroups apache access
        </IfModule>

        CustomLog /var/log/httpd/domains/mysite.com.bytes bytes
    CustomLog /var/log/httpd/domains/mysite.com.log combined
        ErrorLog /var/log/httpd/domains/mysite.com.error.log

        <Directory /home/admin/domains/mysite.com/private_html>
                Options +Includes -Indexes

                php_admin_flag safe_mode OFF
                php_admin_flag engine ON
                php_admin_value sendmail_path '/usr/sbin/sendmail -t -i -f [email protected]'

            php_admin_value open_basedir /home/admin/:/tmp:/var/tmp:/usr/local/lib/php/
        </Directory>
</VirtualHost>

助けてくれてありがとう。ありがとうございます。

ベストアンサー1

ここはApacheとは何の関係もありません。 httpサービスとhttpsサービスは異なるポートにあり、ポートはTCP / IPヘッダーに割り当てられています。顧客別。 Apacheは、ランダムに選択せずに、特定のポートで行われた特定の要求に応答して実行する必要がある作業を実行します。

つまり、アドレスバーに直接入力してプロトコル(http、ftp、https...)を省略すると、Webクライアント(ブラウザ)はhttpsを選択します。サイト履歴がある場合、ブラウザは内部リストから一致するものを選択します。

これは、サイト内のリンクではなくアドレスバーに入力した場合にのみ発生しますが、サイトをレイアウトすることをお勧めします。冗長パスなし混乱を避けるために他のプロトコルとして使用します。同じドメイン名を引き続き使用できます。https://my.domain/secure/rest-of-pathパスの先頭()に「secure」を追加するだけです。 Apacheが提供するものがhttpsとhttpに対して同じでなければならない場合は、エンドユーザーとWebクライアントが見ることができるようにシンボリックリンクまたはmod_rewrite(私は適切だと思います。私はApacheの専門家ではありません)を使用します。これらのパスは異なります。 。

あなたできるhttpリクエストをhttpsポートにリダイレクトするか、逆にリダイレクトするようにApacheを設定します。しかし、実際にそれを行うかどうかがわかります。サーバーログでこれらのリダイレクトの証拠を見つけることもできますし、Wiresharkのトランザクションを見ると確実に見つけることができます。

HTTPトランザクションをデバッグして理解するには、Wiresharkを使用することをお勧めします。送信元ポートと宛先ポートは、トランスポート制御プロトコルの下にあります。これは受信者ではなく送信者によって設定されます。 80は通常httpと見なされ、443はhttpsと見なされます。どのポートでも非標準ポートを使用できますが、この場合、通常のネットワーククライアントは使用するポートを明示的に知らせる必要があります(たとえば、:NNNアドレスを追加してhttps://my.domain:4040/path)、サーバーは明示的にそのポートを提供するように設定する必要があります。土地もそう。

おすすめ記事