SSL:所有內容的兩個副本……做錯了
這可能是一個 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 文件 - 如果您不能,該文件可能已經存在。
最後一口氣:聯繫您的託管服務提供商!