2011-10-26 16 views
0

我正在開發一些php腳本,如果我通過http訪問它就能正常工作。但是,雖然我嘗試通過https前綴服務器訪問它返回404錯誤。我在這裏做錯了什麼?404當使用https與php腳本時出錯

+0

你可以打開網址瀏覽器? – powtac

+4

將您的HTTPS服務器配置爲使用與HTTP服務器相同的webroot。 – hakre

+0

您必須提供更多詳細信息以便我們幫助您 –

回答

1

根據網絡服務器,error_log(nginx/apache/apache2)指令以及錯誤記錄位置,將幫助您瞭解問題發生的位置。 404表示該文件不存在或權限未正確設置,以便Web服務器爲其提供服務。由於HTTPS只發生在HTTPS上,因此建議使用hackre,您的HTTPS服務器可能不會使用與HTTP相同的文檔根目錄。

發佈關於Web服務器的類型,有什麼,如果有的話,顯示了在錯誤日誌信息,幫助大家在stackoverflow.com更好地瞭解您的問題,並提出一個合適的答案。

基於名稱的虛擬主機將無法使用HTTPS正常運行。你可以有HTTPS 1個IP地址1個虛擬主機:http://wiki.apache.org/httpd/NameBasedSSLVHosts

作爲一項規則,是不可能的主機上的相同的IP地址和端口多個SSL虛擬主機。這是因爲Apache需要知道主機的名稱才能選擇正確的證書來設置加密層。但是被請求主機的名稱只包含在HTTP請求標頭中,這些標頭是加密內容的一部分。因此,在加密已經協商之後才能使用。這意味着無法選擇正確的證書,並且客戶端將收到證書不匹配警告,並容易受到中間人攻擊。

實際上,Apache將允許您配置基於名稱的SSL虛擬主機,但它將始終使用第一個列出的虛擬主機(在選定的IP地址和端口上)的配置來設置加密層。在某些特定情況下,對多個虛擬主機使用單個SSL配置是可以接受的。特別是,如果SSL證書適用於所有虛擬主機,這將起作用。

+0

正如我的回答所述,您不能使用不同的證書設置基於名稱的ssl主機,這是不正確的。 Apache2支持NI,這使得這成爲可能......如果你不支持IE <7,FF1和其他過時的瀏覽器。 –

+0

我聯繫了我的主機提供商,並詢問了有關線程中提到的問題。他向我提供的信息表明服務器缺少支持https連接的配置。它已被修復。謝謝你的幫助 –

1

請檢查並仔細檢查您的服務器配置 - 尤其是DocumentRoots。

可以在使用SNI(服務器名稱指示 - 相對新的TLS擴展名)的NameBasedVirtualHosting上使用SSL。

SNI由大多數主要服務器和幾乎所有客戶端支持。

Apache2自2.2.12版本開始支持它,帶有backport補丁的Apache,nginx,lighthttpd和cherokee都支持它。

請參閱:http://de.wikipedia.org/wiki/Server_Name_Indication幾更多信息