Apache-2.2

Apache 服務錯誤的文件根目錄

  • January 21, 2014

我已經在我網站的子域上安裝了 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.comhttp://domain.com.

這是我的虛擬主機。

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>

我試過的

有人建議我https://domain.com為錯誤的 VirtualHost 提供服務,因為沒有*:443帶有ServerNameof 的VirtualHost domain.com

為了解決這個問題,我試過這樣做:

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)

非常感謝您的任何指導。

這行不通。這不是 SSL 的工作方式。要啟用 SSL,您必須有一個 SSLEngine On 以及伺服器證書和密鑰的指令。

僅僅通過聽 443 將無濟於事。

如果您不打算在 domain.com 上執行 SSL,那麼理想情況下您不應該嘗試通過 HTTPS 訪問它。是否有有效的案例說明您的使用者將嘗試通過 https 訪問 domain.com?

引用自:https://serverfault.com/questions/568897