close

最近工作上遇到的經驗是~

在公司自家的虛擬機(windows伺服器)上同時要架設2個網站,但一個網站是有SSL憑證(走443 port),一個是沒有SSL憑證(走80 port)

(不要問我為什麼一個沒有SSL憑證 XD)

 

一開始照著網路的步驟,

在 apache的 httpd-vhost.conf 新增兩筆vhost

A網站用443 port,B網站用80port

但會遇到一個神奇的情形~

A網站,若直接輸入網域名稱,會自動用https連線,但若網址直接打http://A網站網址,則會跳到B網站畫面...

即使A網站在.htaccess設定了自動轉址https的語法,仍是無法自動轉向到https,

理想狀態應該是:不論輸入http或https://A網址,都會導向A網站...

檢查+測試後發現,需要多補一筆A網站的 80 port紀錄,才能讓http://www.A.com 正確指向 A網站。

另外再搭配A網站的.htaccess設定,將http自動轉址到https。

亦即是:

1.在 httpd.conf檔,找到Virtual hosts,取消註解(移除以下這行最前方的#號),讓伺服器去讀httpd-vhost.conf的設定

#Include conf/extra/httpd-vhosts.conf

改為 

Include conf/extra/httpd-vhosts.conf

 

2.在httpd-vhost.conf檔,最後方加上設定:

A網站的443 port資訊

<VirtualHost _default_:443>        

        ServerName www.A.com
        DocumentRoot    "C:/xampp/htdocs/A"

        SSLEngine on  
        SSLCACertificateFile   "C:/xampp/ssl/ca_bundle.crt"
        SSLCertificateFile       "C:/xampp/ssl/A.com.crt"
        SSLCertificateKeyFile  "C:/xampp/ssl/A.com.key"
</VirtualHost>

A網站的80 port資訊

<VirtualHost *:80>
  ServerName www.A.com 
  DocumentRoot "C:/xampp/htdocs/A"  
</VirtualHost>

B網站的80 port資訊

<VirtualHost *:80>
  ServerName www.B.com 
  DocumentRoot "C:/xampp/htdocs/B"  
</VirtualHost>

 

 

補充:

由於是先進行搬站,沒問題才移轉正式網域到這台主機,

若尚未移轉正式網域,在本機上要作測試時,

可先將C:\Windows\System32\drivers\etc 裡的hosts檔,

增加以下:

127.0.0.1  www.A.com

127.0.0.1  www.B.com

這樣就可以模擬測試A網站和B網站的連線看到的畫面了。

arrow
arrow
    文章標籤
    apache教學 xampp 網站企劃
    全站熱搜
    創作者介紹
    創作者 clover75 的頭像
    clover75

    種子種子快長大

    clover75 發表在 痞客邦 留言(0) 人氣()