網站使用雙IP基本上也沒什麼問題,只要兩個IP都能解析到伺服器端就OK,不過目前遇到的問題是針對桃園市教育局私有雲虛擬主機雙IP問題做處理的,先講解一下環境配置。
<script>
私有雲虛擬主機預設有兩組IP,分為內網段跟外網段
例如
內網段IP-10.241.82.101
外網段IP-163.30.41.232
私有雲會針對學校的IP自動做DNS解析並配置到內網段,換句話說例如A學校進入A學校私有雲的網站,則私有雲DNS自動解析對應內網段IP-10.241.82.101,反之則對應外網段IP-163.30.41.232 。
但遇到一個頭痛的問題,就是外網段無權限解析內網段的私有雲虛擬主機,內網段一樣無法解析外網段的私有雲虛擬主機!!
但Xoops的實體路徑只能設一組,如果設成外網段的IP,則校內就看不到網站,反之設成校內IP,則外網就看不到網站。
解決方案只能修改Xoops的路徑跟前端透過jQuery轉換網址,方法如下:
//php修改部分
1、先找到mainfile.php檔案,用筆記本打開
吧XOOPS_URL替換為
define('XOOPS_URL', "http://".$_SERVER['HTTP_HOST']."");
//$_SERVER['HTTP_HOST']為PHP自動判斷連線IP產生的網址變數,所以這樣用內網段進入XOOPS_URL就會變成內網段IP-10.241.82.101,用外網段進入XOOPS_URL就會變外網段IP-163.30.41.232 ,如此一來內外網就都能開啟網站了!
但這樣只完成了30%,因為假設學校用內網段的CK編輯器上傳了一張圖片,而圖片路徑是被寫入資料庫的,那外網則無法觀看此圖片,因為外網沒有解析內網段的權限。
所以還必須修改佈景加上全局圖片網址自動轉換功能才能完整解決,修改方法如下。
//JS修改部分
在佈景js區加上以下code
<script>
//取得Xoops實體路徑
var xoopsjsurl='<{$xoops_url}>';
//更換URL
$(document).ready(function(){
//如果網站路徑==http://163.30.41.232,吧src跟href中的URL轉換為10.241.82.101
var xoopsjsurl='<{$xoops_url}>';
//更換URL
$(document).ready(function(){
//如果網站路徑==http://163.30.41.232,吧src跟href中的URL轉換為10.241.82.101
if(xoopsjsurl=="http://163.30.41.232"){
replaceurl($id="img",$attr="src",$type="1"); //轉src
replaceurl($id="a",$attr="href",$type="1"); //轉href
}
replaceurl($id="img",$attr="src",$type="1"); //轉src
replaceurl($id="a",$attr="href",$type="1"); //轉href
}
//如果網站路徑==http://10.241.82.101,吧src跟href中的URL轉換為163.30.41.232
if(xoopsjsurl=="http://10.241.82.101"){
replaceurl($id="img",$attr="src",$type="2"); //轉src
replaceurl($id="a",$attr="href",$type="2"); //轉href
}
function replaceurl($id,$attr,$type){
$($id).each(function(index) {
var $bodybox=$(this).attr($attr);
if(typeof($bodybox) != 'undefined'){
switch ($type) {
case '1':
var $bodyboxreplace=$bodybox.replace(/http\:\/\/10\.241\.82\.101/g, xoopsjsurl);//轉換網址
break;
case '2':
var $bodyboxreplace=$bodybox.replace(/http\:\/\/163\.30\.41\.232/g, xoopsjsurl);//轉換網址
break;
}
}
$(this).attr($attr, $bodyboxreplace);
});
}
});
</script>
replaceurl($id="img",$attr="src",$type="2"); //轉src
replaceurl($id="a",$attr="href",$type="2"); //轉href
}
function replaceurl($id,$attr,$type){
$($id).each(function(index) {
var $bodybox=$(this).attr($attr);
if(typeof($bodybox) != 'undefined'){
switch ($type) {
case '1':
var $bodyboxreplace=$bodybox.replace(/http\:\/\/10\.241\.82\.101/g, xoopsjsurl);//轉換網址
break;
case '2':
var $bodyboxreplace=$bodybox.replace(/http\:\/\/163\.30\.41\.232/g, xoopsjsurl);//轉換網址
break;
}
}
$(this).attr($attr, $bodyboxreplace);
});
}
});
</script>
這樣就ok了,經測試內網貼的圖片外網能觀看,外網貼的圖片內網也能觀看,網站其他跟js有關的功能都沒影響,這樣問題就解決了,有需要的朋友參考看看
教學撰寫:徐嘉裕 Neil hsu
留言
張貼留言