moodle 如何内外网同时访问

    技术2022-05-20  50

    这个问题一个困扰着我,不知有没有完美的解决办法。

    安装moodle时你用的什么地址,访问时似乎也只能用什么地址来访问。所以只好我内网使用时,在config.php里改为内网的地址,在外网访问时,再改成外网的地址。很不方便。而同在一个服务器的数据库下安装的discuz论坛却无此麻烦。只要安装好,无论用内网地址,还是用外网地址访问都非常方便。

    就是在内网使用时还有如下问题:你在服务器如果用http://localhost/moodle安装好,而在其它客户机上用http://该服务器的IP/moodle可以访问到首页,但你登录或访问moodle上的其它页面时,地址仍是http://localhost/moodle/login.php,所有你非得用http://该服务器的IP/moodle安装才行。

    我想问的问题是,对于config.php的"$CFG->wwwroot ="地址字符串是否可添加多个?如何添加?

    谢谢各位。

    #######################################

     

     

    我的经验是在公网上注册一个域名(例如www.abc.cn),进行泛名解析(*.abc.cn)指向公网IP,然后将在学校内部用ISA发布moodle。公共名称为moodle.abc.cn,IP指向内网moodle服务器的IP。在校内做DNS(可以做在ISA服务器上),将moodle.abc.cn解析到内网IP。在Moodle系统中用域名进行配置,$CFG->wwwroot = 'http://moodle.abc.cn' 。一切OK!

    请访问上海市三林中学的仰高课程学习平台。http://moodle.shslzx.cn

    这个方案,我在浦东的几个项目学校试过,均没问题。

     

    #######################

    刚刚找到解决方法,根据内外网地址修改$CFG->wwwroot =的值;代码如下:

    <?php

    unset($CFG);

    function _get_client_ip()//取得代理的IP等{  if(getenv('HTTP_CLIENT_IP'))   {     $client_ip = getenv('HTTP_CLIENT_IP');   } elseif(getenv('HTTP_X_FORWARDED_FOR'))   {     $client_ip = getenv('HTTP_X_FORWARDED_FOR');   } elseif(getenv('REMOTE_ADDR'))   {     $client_ip = getenv('REMOTE_ADDR');   } else   {     $client_ip = $HTTP_SERVER_VARS['REMOTE_ADDR'];   }   Return  $client_ip;}function Is_Network()//判断是否为内网network 或 Net foreign{  $b=0;  $c_ip=_get_client_ip();  $c_ip=substr($c_ip,0,3);  if (($c_ip=="192")||($c_ip=="127"))//这里添加内网段  {  $b=1;//内网  }  Return $b;}

    $CFG->dbtype    = 'mysql';$CFG->dbhost    = 'localhost';$CFG->dbname    = 'moodle';$CFG->dbuser    = 'root';$CFG->dbpass    = 'bysj123';$CFG->dbpersist =  false;$CFG->prefix    = 'mdl_';

    if (Is_Network()==0) {$CFG->wwwroot   = '  ';//外网地址的ip} else {$CFG->wwwroot   = '' ;//内网ip}

    $CFG->dirroot   = 'E:/AppServ/www/moodle';$CFG->dataroot  = 'E:/AppServ/moodledata';$CFG->admin     = 'admin';

    $CFG->directorypermissions = 00777;  // try 02777 on a server in Safe Mode

    $CFG->unicodedb = true;  // Database is utf8

    $CFG->unicodecleanfilename = true; // Allow upload with Chinese filename

    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.?>

     

     

    #####################

    安装moodle后,找到moodle安装目录下的config.php文件,找到$CFG->wwwroot = 'http://xxx.xxx.xxx.xxx';将它修改为$CFG->wwwroot = 'http://'.$_SERVER['HTTP_HOST'];即可。如果有下级目录的话修改为$CFG->wwwroot = 'http://'.$_SERVER['HTTP_HOST'].'/moodle';

    解决思路是让系统自动判定访问路径。完美解决问题 。 

      我用的最后一种方法,很方便。资源的路径问题,没有完全测试。


    最新回复(0)