Apache-2.2

SSL:所有內容的兩個副本……做錯了

  • August 5, 2009

這可能是一個 SO 問題,但聽起來很服務……

每當我設置一個使用 SSL 的站點(不是證書和伺服器本身,只是上傳文件)時,我總是在 HTTP 位中得到一個站點副本,在 HTTPS 部分中得到另一個副本,並帶有轉發標頭向後和向前發送使用者。這也導致了兩個副本,維護起來很荒謬。這讓我覺得我做錯了,因此這篇文章。

我知道 SSL “阻止了壞傢伙”(或者至少減慢了一些速度),我知道主機上有單獨的部分用於 SSL 和非 SSL,但是有人可以告訴我一些繩索嗎?或在網際網路上推荐一些文章?

…大菜鳥的眼淚…

非常感謝

編輯:Gimel 說細節會很好……

嗯,共享主機上的 LAMP,具有共享 SSL 證書,目前正在與 Zencart 作戰,但更廣泛的建議將不勝感激,我沒有命令行訪問權限,只有 FTP 和什麼沒有(unix 有點嚇人).. 。 這是你的意思嗎?

假設您使用的是 apache vhosting,只需將 DocumentRoot 設置為兩者的相同位置即可。要使用符號連結(如Dan C 的回答),請確保您擁有

Options +FollowSymLinks

在您的 httpdocs/.htaccess 文件或您的主 httpd.conf 中適當設置(在該目錄中的每個頁面載入時查找和處理 .htaccess 文件,因此無需重新啟動 apache,但是它們比實現相同的要慢httpd.conf 中的程式碼,因為此文件僅在伺服器啟動時處理)。

這是一個 httpd.include,用於從與 HTTP 相同的位置提供 HTTPS 數據:

<VirtualHost *:80>
       ServerName   test.com
       ServerAlias  www.test.com
       UseCanonicalName Off
       DocumentRoot /var/www/vhosts/test.com/httpdocs
       CustomLog  /var/www/vhosts/test.com/logs/access_log common
       ErrorLog   /var/www/vhosts/test.com/logs/error_log
       <IfModule mod_ssl.c>
               SSLEngine off
       </IfModule>
       Include /var/www/vhosts/test.com/conf/vhost.conf
</VirtualHost>

<VirtualHost *:443>
       ServerName   test.com
       ServerAlias  www.test.com
       UseCanonicalName Off
       DocumentRoot /var/www/vhosts/test.com/httpdocs
       CustomLog  /var/www/vhosts/test.com/logs/access_log common
       ErrorLog   /var/www/vhosts/test.com/logs/error_log
       <IfModule mod_ssl.c>
               SSLEngine on
               SSLVerifyClient none
               # example ssl certs
               SSLCertificateFile /usr/local/apache/certs/my.ca.pem
               SSLCertificateKeyFile /usr/local/apache/certs/my.server.key.pem
       </IfModule>
       Include /var/www/vhosts/test.com/conf/vhost_ssl.conf
</VirtualHost>

來自O’Reilly 的一步一步的有用連結:在 Apache 下配置 SSL和Apache SSL 頁面(詳細!)

編輯:

您應該能夠通過 FTP 訪問您的 conf/httpd.include 文件(它可能位於不同的目錄中,但它將位於 /var/www/vhosts/test.com/ 或類似的 vhost 子目錄中 - 您可以找到主 httpd.conf 中的 vhost 目錄)。

您還應該能夠訪問 .htaccess 文件 - 它們是 linux 隱藏文件,因此您可能需要檢查 FTP 客戶端的文件。或者,嘗試在您的虛擬主機的 httpdocs/ 目錄中創建一個 .htaccess 文件 - 如果您不能,該文件可能已經存在。

最後一口氣:聯繫您的託管服務提供商!

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