web-dev-qa-db-ja.com

間違ったドキュメントルートを提供するApache

サイトのサブドメインにSSLをインストールしました。この奇妙な動作を除いて、すべてが完全に機能します。

ブラウザを次の場所に向けると、これらのドキュメントルートが提供されます。

http://domain.com       -> /var/www     [GOOD]
https://sub.domain.com  -> /media/sub   [GOOD]
https://domain.com      -> /media/sub   [BAD]

そのリストの最後のURLは、/var/wwwではなく/media/subを提供する必要があります。つまり、ユーザーをhttps://domain.comからhttp://domain.comに安全にリダイレクトしたいと思います。

これが私のVirtualHostsです。

domain.com

<VirtualHost *:80>
    ServerName domain.com
    DocumentRoot /var/www
</VirtualHost>

sub.domain.com

<VirtualHost *:443>
    ServerName sub.domain.com:443
    DocumentRoot /media/sub
    SSLEngine on
    SSLCertificateFile /etc/Apache2/ssl/Apache.crt
    SSLCertificateKeyFile /etc/Apache2/ssl/Apache.key
</VirtualHost>

私が試したこと

ServerNamehttps://domain.com*:443 VirtualHostがないため、domain.comが間違ったVirtualHostを提供していることが示唆されました。

これを修正するために、私はこれを試してみました:

domain.com

<VirtualHost *:80>
    ServerName domain.com
    DocumentRoot /var/www
</VirtualHost>
<VirtualHost *:443>
    ServerName domain.com
    Redirect / http://domain.com/
</VirtualHost>

私はこのがうまくいくはずだと感じています。 (httpsリクエストをhttpにリダイレクトして、正しいドキュメントルートを提供する必要があります。)

ただし、これを行うと、Apache2も起動しません。それは私にこのエラーを与えます:

[error] Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile] ((null):0)

ご指導ありがとうございます。

1
Leng

これは機能しません。これはSSLの仕組みではありません。 SSLを有効にするには、SSLEngineをオンにし、サーバー証明書とキーのディレクティブを設定する必要があります。

443を聞いているだけでは役に立ちません。

Domain.comでSSLを実行する予定がない場合は、理想的にはHTTPS経由でSSLにアクセスしようとしないでください。ユーザーがhttps経由でdomain.comにアクセスしようとする有効なユースケースはありますか?

2
Mukul