moodle支持多网址内外网访问解决办法
背景:
很多学校需要将moodle平台部署在内网上,并且映射在外网或者服务器接内外网两个网线,用这个办法即可解决问题。
解决方案:
$CFG->wwwroot= 'http://'.$_SERVER['HTTP_HOST'];
如果是下级目录,则修改为:
$CFG->wwwroot= 'http://'.$_SERVER['HTTP_HOST'].'/moodle';
因为$_SERVER['HTTP_HOST']就是来源网址(包含端口,80会省略)
希望大家成功。
参考网址:
http://blog.sina.com.cn/s/blog_71e7aadc0101of56.html
默认情况下,moodle仅能绑定一个域名。但是由于学校网络分内网和外网,总希望如果是外网访问的,用外网的域名,用内网访问的,就转到内网的ip。这样访问的速度会更快一些,也减低对防火墙的压力。尤其是当外网ip不够用,用外网ip的非80端口映射内网ip的80端口时,让moodle支持多个域名是很有必要的。
如我校的这个案例:内网ip10.1.2.60,用80端口;外网ip不够用,只好将218.75.25.143的8080端口给映射过来。我试着自己修改根目录下的config.php文件。虽然我对php不是很熟悉,但是这几句简单的代码还是能轻易写出来的。核心的代码如下:
if($_SERVER['HTTP_HOST'] == "10.1.2.60"){
$CFG->wwwroot= 'http://10.1.2.60';}
else{
$CFG->wwwroot= 'http://218.75.25.143:8080';}
附:config.php文件。
unset($CFG);
$CFG->dbtype= 'mysql';
$CFG->dbhost= 'localhost';
$CFG->dbname= 'moodle';
$CFG->dbuser= 'root';
$CFG->dbpass= 'wzms_mysql';
$CFG->dbpersist =false;
$CFG->prefix= 'mdl_';
if($_SERVER['HTTP_HOST']
== "10.1.2.60"){
$CFG->wwwroot= 'http://10.1.2.60';}
else{
$CFG->wwwroot= 'http://218.75.25.143:8080';}
$CFG->dirroot= '/var/www/html';
$CFG->dataroot= '/var/www/moodledata';
$CFG->admin= 'admin';
$CFG->directorypermissions = 00777;// try 02777 on a server in Safe Mode
$CFG->unicodecleanfilename = true;//中文支持
require_once("$CFG->dirroot/lib/setup.php");
// MAKE SURE WHEN YOU EDIT THIS FILE THAT THERE ARE NO SPACES, BLANK LINES,
// RETURNS, OR ANYTHING ELSE AFTER THE TWO CHARACTERS ON THE NEXT LINE.
?>