Apache-2.2
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
.這是我的虛擬主機。
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
帶有ServerName
of 的VirtualHostdomain.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?