国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

dedecms5.7(織夢)源碼解析之程序安裝

olle / 2429人閱讀

摘要:前言眾所周知,在第一次運行時會檢測是否安裝,如果沒有,則自動跳轉到安裝界面,進行用戶友好的安裝步驟,下面我們就來從源碼看看這一切是如何完成的。總結安裝的話,到此結束了,基本都是接收表單參數,操作文件和數據庫的東西。

前言

眾所周知,dedecms在第一次運行時會檢測是否安裝,如果沒有,則自動跳轉到安裝界面,進行用戶友好的安裝步驟,下面我們就來從源碼看看這一切是如何完成的。

代碼

默認服務器配置入口文件是index.html,index.php等,織夢uploads文件夾中僅有index.php,遂直接運行index.php文件啊,源碼如下:

GetOne("Select * From `#@__homepageset`");
    $row["templet"] = MfTemplet($row["templet"]);
    $pv = new PartView();
    $pv->SetTemplet($cfg_basedir . $cfg_templets_dir . "/" . $row["templet"]);
    $row["showmod"] = isset($row["showmod"])? $row["showmod"] : 0;
    if ($row["showmod"] == 1)
    {
        $pv->SaveToHtml(dirname(__FILE__)."/index.html");
        include(dirname(__FILE__)."/index.html");
        exit();
    } else { 
        $pv->Display();
        exit();
    }
}
else
{
    header("HTTP/1.1 301 Moved Permanently");
    header("Location:index.html");
}
?>

縱觀整個文件,其中代碼大概分成了兩部分:

判斷是存在全局配置文件(是否安裝)

判斷根目錄是否存在index.html文件,沒有則生成

具體請看下面帶有注釋的代碼:

GetOne("Select * From `#@__homepageset`");
    // 模板目錄規則
    $row["templet"] = MfTemplet($row["templet"]);
    // 創建視圖對象
    $pv = new PartView();
    // 設置要解析的模板
    $pv->SetTemplet($cfg_basedir . $cfg_templets_dir . "/" . $row["templet"]);
    // 這里接收的應該是模塊參數,方便后面進行判斷
    $row["showmod"] = isset($row["showmod"])? $row["showmod"] : 0;
    // 判斷當前模塊
    if ($row["showmod"] == 1)
    {
        // 生成index.html文件
        $pv->SaveToHtml(dirname(__FILE__)."/index.html");
        // 生成后包含進來(注意不是跳轉哦)
        include(dirname(__FILE__)."/index.html");
        // 終止
        exit();
    } else { 
        // 直接執行
        $pv->Display();
        // 終止
        exit();
    }
}
else
{
    // 設置301header跳啊轉
    header("HTTP/1.1 301 Moved Permanently");
    // 跳轉進入index.html頁面
    header("Location:index.html");
}
?>

好,index.php入口文件我們從上面的注釋中已經能夠大概明白他的內容和作用了,下面就順著安裝步驟找安裝文文件install/index.php吧,由于這個文件內容太多,源碼我就不放了,直接放上我注釋過的源碼內容:

 $_v) ${$_k} = RunMagicQuotes($_v);
}

// 包含進入系統核心函數文件
require_once(DEDEINC."/common.func.php");

// 檢測安裝鎖文件是否已經存在,如果存在終止程序執行,并提示文件已經安裝
if(file_exists($insLockfile))
{
    exit(" 程序已運行安裝,如果你確定要重新安裝,請先從FTP中刪除 install/install_lock.txt!");
}

// 初始化文件安裝步驟
if(empty($step))
{
    $step = 1;
}
/*------------------------
使用協議書
function _1_Agreement()
------------------------*/
// 如果為第一步,則引入使用協議書頁面
if($step==1)
{
    // 引入第一個頁面(使用協議書)
    include("./templates/step-1.html");
    // 終止當前執行
    exit();
}
/*------------------------
環境測試
function _2_TestEnv()
------------------------*/
// 如果為第二部,則引入環境測試頁面
else if($step==2)
{
    // 獲取php版本
    $phpv = phpversion();
    // 獲取當前操作系統類型
    $sp_os = PHP_OS;
    // 獲得GD的版本
    $sp_gd = gdversion();
    // 獲取服務器標識的字串
    $sp_server = $_SERVER["SERVER_SOFTWARE"];
    // 獲取當前host-如果ip不存在,則直接獲取主機名,否則為ip
    $sp_host = (empty($_SERVER["REMOTE_ADDR"]) ? $_SERVER["REMOTE_HOST"] : $_SERVER["REMOTE_ADDR"]);
    // 獲取當前服務器主機名稱
    $sp_name = $_SERVER["SERVER_NAME"];
    // 獲取當前配置最大執行時間
    $sp_max_execution_time = ini_get("max_execution_time");
    // 獲取當前在函數調用時參數被按照引用傳遞時是否發出警告-php5.4以上已經移除
    $sp_allow_reference = (ini_get("allow_call_time_pass_reference") ? "[√]On" : "[×]Off");
    // 獲取當前是否 URL 形式的 fopen 封裝協議
    $sp_allow_url_fopen = (ini_get("allow_url_fopen") ? "[√]On" : "[×]Off");
    // 獲取當前是否已經打開php的安全模式
    $sp_safe_mode = (ini_get("safe_mode") ? "[×]On" : "[√]Off");
    // 獲取當前是否打開gd庫
    $sp_gd = ($sp_gd>0 ? "[√]On" : "[×]Off");
    // 獲取當前是否打開mysql擴展
    $sp_mysql = (function_exists("mysql_connect") ? "[√]On" : "[×]Off");

    // 判斷并定義mysql錯誤
    if($sp_mysql=="[×]Off")
    $sp_mysql_err = TRUE;
    else
    $sp_mysql_err = FALSE;

    // 定義測試目錄
    $sp_testdirs = array(
        "/",
        "/plus/*",
        "/dede/*",
        "/data/*",
        "/a/*",
        "/install",
        "/special",
        "/uploads/*"
    );
    // 包含第二部文件
    include("./templates/step-2.html");
    // 終止本次執行
    exit();
}
/*------------------------
設置參數
function _3_WriteSeting()
------------------------*/
// 第三部設置參數
else if($step==3)
{
    // 取得當前URL的 路徑地址
    if(!empty($_SERVER["REQUEST_URI"]))
    $scriptName = $_SERVER["REQUEST_URI"]; // 如果存在,則直接寫入
    else
    $scriptName = $_SERVER["PHP_SELF"]; // 獲取正在執行腳本的文件名

    // 通過正則替換,獲得基礎目錄-根目錄路徑
    $basepath = preg_replace("#/install(.*)$#i", "", $scriptName);

    // 獲取當前請求的 Host: 頭部的內容。
    if(!empty($_SERVER["HTTP_HOST"]))
        $baseurl = "http://".$_SERVER["HTTP_HOST"]; // 存在則寫入
    else
        $baseurl = "http://".$_SERVER["SERVER_NAME"]; // 獲取服務器主機的名稱

    // 大小寫字母和阿拉伯數字
    $chars="abcdefghigklmnopqrstuvwxwyABCDEFGHIGKLMNOPQRSTUVWXWY0123456789";
    // 隨機cookie編碼
    $rnd_cookieEncode="";
    // 隨機長度
    $length = rand(28,32);
    // $chars最大長度
    $max = strlen($chars) - 1;
    // 按隨機生成的長度進行for循環
    for($i = 0; $i < $length; $i++) {
        // 每次存入$chars中一個隨機字符
        $rnd_cookieEncode .= $chars[mt_rand(0, $max)];
    }
    // 初始化數據體驗包為關閉
    $isdemosign = 0;
    // 判斷如果存在初始化體驗包的文件,則數據體驗包設置為開啟
    if(file_exists($install_demo_name) && file_get_contents($install_demo_name)) $isdemosign = 1;
    // 定義數據模塊目錄
    $module_local = DEDEDATA."/module/";
    // 包含第三個頁面文件
    include("./templates/step-3.html");
    // 終止執行
    exit();
}
/*------------------------
普通安裝
function _4_Setup()
------------------------*/
// 進入普通安裝步驟
else if($step==4)
{
    // 按照用戶輸入連接mysql數據庫
    $conn = mysql_connect($dbhost,$dbuser,$dbpwd) or die("");
    // 如果數據庫不存在,則創建數據庫
    mysql_query("CREATE DATABASE IF NOT EXISTS `".$dbname."`;",$conn);
    // 選擇數據庫
    mysql_select_db($dbname, $conn) or die("");

    //獲得數據庫版本信息
    $rs = mysql_query("SELECT VERSION();",$conn);
    // 從結果集中取得一行作為數組
    $row = mysql_fetch_array($rs);
    // 按.分割
    $mysqlVersions = explode(".",trim($row[0]));
    // 重組,只要前兩個主要和次要版本即可
    $mysqlVersion = $mysqlVersions[0].".".$mysqlVersions[1];
    // 設置字符集
    mysql_query("SET NAMES "$dblang",character_set_client=binary,sql_mode="";",$conn);
    // 創建全局配置文件
    $fp = fopen(dirname(__FILE__)."/common.inc.php","r");
    // 讀取全局配置文件
    $configStr1 = fread($fp,filesize(dirname(__FILE__)."/common.inc.php"));
    // 關閉文件資源
    fclose($fp);

    // 打開安裝配置緩存文件
    $fp = fopen(dirname(__FILE__)."/config.cache.inc.php","r");
    // 讀取安裝配置緩存文件
    $configStr2 = fread($fp,filesize(dirname(__FILE__)."/config.cache.inc.php"));
    // 關閉資源
    fclose($fp);

    //common.inc.php 定義部分需要寫入全局配置文件的內容
    $configStr1 = str_replace("~dbhost~",$dbhost,$configStr1);
    $configStr1 = str_replace("~dbname~",$dbname,$configStr1);
    $configStr1 = str_replace("~dbuser~",$dbuser,$configStr1);
    $configStr1 = str_replace("~dbpwd~",$dbpwd,$configStr1);
    $configStr1 = str_replace("~dbprefix~",$dbprefix,$configStr1);
    $configStr1 = str_replace("~dblang~",$dblang,$configStr1);

    // 設置根目錄data目錄權限
    @chmod(DEDEDATA,0777);
    // 打開全局配置文件(創建),如果無法創建,則說明目錄沒有寫入權限
    $fp = fopen(DEDEDATA."/common.inc.php","w") or die("");
    // 將自帶的緩存配置文件中部分相應內容寫入全局配置文件中
    fwrite($fp,$configStr1);
    // 關閉文件資源
    fclose($fp);

    //config.cache.inc.php
    // CMS安裝目錄,匹配至少一個/
    $cmspath = trim(preg_replace("#/{1,}#", "/", $cmspath));
    // 如果匹配到了至少一個/而且也沒有匹配到以/開頭的(加上/,即加上根目錄)
    if($cmspath!="" && !preg_match("#^/#", $cmspath)) $cmspath = "/".$cmspath;

    // 如果cms路徑為空,則indexUrl為/
    if($cmspath=="") $indexUrl = "/";
        // 否則indexUrl等于cms路徑
    else $indexUrl = $cmspath;

    // 從安裝配置緩存文件中讀取部分配置用于后面寫入
    $configStr2 = str_replace("~baseurl~",$baseurl,$configStr2);
    $configStr2 = str_replace("~basepath~",$cmspath,$configStr2);
    $configStr2 = str_replace("~indexurl~",$indexUrl,$configStr2);
    $configStr2 = str_replace("~cookieEncode~",$cookieencode,$configStr2);
    $configStr2 = str_replace("~webname~",$webname,$configStr2);
    $configStr2 = str_replace("~adminmail~",$adminmail,$configStr2);

    // 創建data目錄下的緩存配置文件
    $fp = fopen(DEDEDATA."/config.cache.inc.php","w");
    // 寫入
    fwrite($fp,$configStr2);
    // 關閉資源
    fclose($fp);

    // 創建data目錄下的緩存配置備份文件
    $fp = fopen(DEDEDATA."/config.cache.bak.php","w");
    // 寫入
    fwrite($fp,$configStr2);
    // 關閉資源
    fclose($fp);

    // 檢測mysql版本是否大于4.1
    if($mysqlVersion >= 4.1)
    {
        // 如果大于,則將引擎設置為MyISAM,字符集設置為$dblanag內容
        $sql4tmp = "ENGINE=MyISAM DEFAULT CHARSET=".$dblang;
    }

    //創建數據表
    // 初始化定義變量
    $query = "";
    // 以只讀方式打開數據表文件
    $fp = fopen(dirname(__FILE__)."/sql-dftables.txt","r");
    // while循環-如果文件沒有到達末尾 則執行while中的代碼
    while(!feof($fp))
    {
        // 從文件指針中讀取一行,并去除首尾空格
        $line = rtrim(fgets($fp,1024));
        // 正則匹配出;號
        if(preg_match("#;$#", $line))
        {
            // 將每行末尾加上
換行符
            $query .= $line."
";
            // 將#@__替換成數據庫表前綴
            $query = str_replace("#@__",$dbprefix,$query);
            // 如果數據庫版本小于4.1的情況下
            if($mysqlVersion < 4.1)
            {
                // 直接執行查詢
                $rs = mysql_query($query,$conn);
            } else {
                // 否則匹配出query中是否存在create創建語句
                if(preg_match("#CREATE#i", $query))
                {
                    // 如果有,則將其中的TYPE=MyISAM替換成上面定義的$sql4tmp內容,并且執行創建
                    $rs = mysql_query(preg_replace("#TYPE=MyISAM#i",$sql4tmp,$query),$conn);
                }
                else
                {
                    // 否則直接執行
                    $rs = mysql_query($query,$conn);
                }
            }
            // while末尾,清空$query,方便下一次存入數據
            $query="";
        } else if(!preg_match("#^(//|--)#", $line))
        { // 正則匹配是否存在//或者--,如果不存在,則賦值$query,方便下一次連接執行
            $query .= $line;
        }
    }
    // 關閉文件資源
    fclose($fp);

    //導入默認數據
    // 初始化定義變量
    $query = "";
    // 以只讀方式打開數據表內容文件
    $fp = fopen(dirname(__FILE__)."/sql-dfdata.txt","r");
    // while循環-如果文件沒有到達末尾 則執行while中的代碼
    while(!feof($fp))
    {
        // 讀取第一行,并清空兩邊空格
        $line = rtrim(fgets($fp, 1024));
        // 正則匹配;號
        if(preg_match("#;$#", $line))
        {
            // 接入
            $query .= $line;
            // 替換前綴符號
            $query = str_replace("#@__",$dbprefix,$query);
            // 如果mysql版本小于4.1,直接執行
            if($mysqlVersion < 4.1) $rs = mysql_query($query,$conn);
                // 否則將文件中的lang換成$dblang內容
            else $rs = mysql_query(str_replace("#~lang~#",$dblang,$query),$conn);
            // 重置 $query
            $query="";
        } else if(!preg_match("#^(//|--)#", $line))
        { // 不到末尾,繼續拼接
            $query .= $line;
        }
    }
    // 關閉資源
    fclose($fp);

    //更新配置
    // 下面是按照頁面中的變量,更新剛才插入數據庫中的一些數據
    $cquery = "Update `{$dbprefix}sysconfig` set value="{$baseurl}" where varname="cfg_basehost";";
    mysql_query($cquery,$conn);
    $cquery = "Update `{$dbprefix}sysconfig` set value="{$cmspath}" where varname="cfg_cmspath";";
    mysql_query($cquery,$conn);
    $cquery = "Update `{$dbprefix}sysconfig` set value="{$indexUrl}" where varname="cfg_indexurl";";
    mysql_query($cquery,$conn);
    $cquery = "Update `{$dbprefix}sysconfig` set value="{$cookieencode}" where varname="cfg_cookie_encode";";
    mysql_query($cquery,$conn);
    $cquery = "Update `{$dbprefix}sysconfig` set value="{$webname}" where varname="cfg_webname";";
    mysql_query($cquery,$conn);
    $cquery = "Update `{$dbprefix}sysconfig` set value="{$adminmail}" where varname="cfg_adminemail";";
    mysql_query($cquery,$conn);

    //增加管理員帳號
    $adminquery = "INSERT INTO `{$dbprefix}admin` VALUES (1, 10, "$adminuser", "".substr(md5($adminpwd),5,20)."", "admin", "", "", 0, "".time()."", "127.0.0.1");";
    mysql_query($adminquery,$conn);

    //關連前臺會員帳號
    $adminquery = "INSERT INTO `{$dbprefix}member` (`mid`,`mtype`,`userid`,`pwd`,`uname`,`sex`,`rank`,`money`,`email`,
                   `scores` ,`matt` ,`face`,`safequestion`,`safeanswer` ,`jointime` ,`joinip` ,`logintime` ,`loginip` )
               VALUES ("1","個人","$adminuser","".md5($adminpwd)."","$adminuser","男","100","0","","10000","10","","0","","".time()."","","0",""); ";
    mysql_query($adminquery,$conn);

    $adminquery = "INSERT INTO `{$dbprefix}member_person` (`mid`,`onlynet`,`sex`,`uname`,`qq`,`msn`,`tel`,`mobile`,`place`,`oldplace`,`birthday`,`star`,
                   `income` , `education` , `height` , `bodytype` , `blood` , `vocation` , `smoke` , `marital` , `house` ,`drink` , `datingtype` , `language` , `nature` , `lovemsg` , `address`,`uptime`)
                VALUES ("1", "1", "男", "{$adminuser}", "", "", "", "", "0", "0","1980-01-01", "1", "0", "0", "160", "0", "0", "0", "0", "0", "0","0", "0", "", "", "", "","0"); ";
    mysql_query($adminquery,$conn);

    $adminquery = "INSERT INTO `{$dbprefix}member_tj` (`mid`,`article`,`album`,`archives`,`homecount`,`pagecount`,`feedback`,`friend`,`stow`)
                     VALUES ("1","0","0","0","0","0","0","0","0"); ";
    mysql_query($adminquery,$conn);

    $adminquery = "Insert Into `{$dbprefix}member_space`(`mid` ,`pagesize` ,`matt` ,`spacename` ,`spacelogo` ,`spacestyle`, `sign` ,`spacenews`)
                Values("1","10","0","{$adminuser}的空間","","person","",""); ";
    mysql_query($adminquery,$conn);

    //安裝體驗數據
    if($installdemo == 1)
    {
        // 獲取體驗數據內容
        if($setupsql = file_get_contents($install_demo_name))
        {
            // 替換引擎
            $setupsql = preg_replace("#ENGINE=MyISAM#i", "TYPE=MyISAM", $setupsql);
            // 定義大于4.1時的創建sql
            $sql41tmp = "ENGINE=MyISAM DEFAULT CHARSET=".$cfg_db_language;
            if($mysql_version >= 4.1) {
                // 如果mysql版本大于4.1,則執行此替換
                $setupsql = preg_replace("#TYPE=MyISAM#i", $sql41tmp, $setupsql);
            }
            // 替換rooturl
            $setupsql = preg_replace("#_ROOTURL_#i", $rooturl, $setupsql);
            // 替換換行符
            $setupsql = preg_replace("#[
]{1,}#", "
", $setupsql);
            // 替換表前綴
            $setupsql = preg_replace("/#@__/i",$dbprefix,$setupsql);
            // 按制表符分割
            $sqls = preg_split("#;[ 	]{0,}
#", $setupsql);
            // 遍歷執行sql代碼
            foreach($sqls as $sql) {
                if(trim($sql)!="") mysql_query($sql,$conn);
            }
            // 更新欄目緩存
            UpDateCatCache();
        } else {
            // 沒有體驗包,提示下載
            die("沒有體驗數據包文件,請檢查是否下載.");
        }
    }

    //不安裝任何可選模塊
    if(!isset($modules) || !is_array($modules))
    {
        //鎖定安裝程序
        // 開始創建鎖文件
        $fp = fopen($insLockfile,"w");
        // 寫入內容ok
        fwrite($fp,"ok");
        // 關閉資源
        fclose($fp);
        // 包含最后提示文件內容
        include("./templates/step-5.html");
        // 終止程序執行,如果不安裝模塊,則程序到此結束
        exit();
    }
    else // 安裝模塊
    {
        // 按照逗號分割模塊
        $module = join(",",$modules);
        // 以寫入形式打開模塊緩存文件
        $fp = fopen($moduleCacheFile,"w");
        // 寫入 ");
        //如果不能寫入緩存文件,退出模塊安裝
        if(!$fp) // 如果無法寫入
        {
            //鎖定安裝程序
            $fp = fopen($insLockfile,"w");
            // 寫入內容ok
            fwrite($fp,"ok");
            // 關閉資源
            fclose($fp);
            // 錯誤信息
            $errmsg = "由于無法寫入模塊緩存,安裝可選模塊失敗,請登錄后在模塊管理處安裝。";
            // 包含最后提示文件內容
            include("./templates/step-5.html");
            // 終止程序
            exit();
        }
        // 關閉資源
        fclose($fp);
        // 包含第4
        include("./templates/step-4.html");
        // 終止
        exit();
    }
    // 終止
    exit();
}
/*------------------------
安裝可選模塊
function _5_SetupModule()
------------------------*/
else if($step==5)
{
    // 跳轉進入模塊安裝文件啊
    header("location:module-install.php");
    exit();
}
/*------------------------
檢測數據庫是否有效
function _10_TestDbPwd()
------------------------*/
else if($step==10)
{
    // 不緩存頁面
    header("Pragma:no-cache
");
    // 不留下頁面備份
    header("Cache-Control:no-cache
");
    // 不過期
    header("Expires:0
");
    // 連接數據庫
    $conn = @mysql_connect($dbhost,$dbuser,$dbpwd);
    // 如果連接成功
    if($conn)
    {
        // 數據庫名稱不為空
        if(empty($dbname)){
            echo "信息正確";
        }else{
            // 否則提示信息
            $info = mysql_select_db($dbname,$conn)?"數據庫已經存在,系統將覆蓋數據庫":"數據庫不存在,系統將自動創建";
            echo $info;
        }
    }
    else
    {
        // 連接失敗時提示信息
        echo "數據庫連接失敗!";
    }
    // 關閉數據庫
    @mysql_close($conn);
    // 終止程序執行
    exit();
}
// 遠程獲取體驗包
else if($step==11)
{
    // 包含更新服務器配置文件
    require_once("../data/admin/config_update.php");
    // 定義文件名,拼接url
    $rmurl = $updateHost."dedecms/demodata.{$s_lang}.txt";

    // 按照文件url獲取資源
    $sql_content = file_get_contents($rmurl);
    // 以寫入方式創建文件
    $fp = fopen($install_demo_name,"w");
    // 寫入資源內容
    if(fwrite($fp,$sql_content))
        // 寫入成功提示
        echo "  [√] 存在(您可以選擇安裝進行體驗)";
    else
        // 寫入失敗提示
        echo "  [×] 遠程獲取失敗";
    // 釋放$sql_content變量
    unset($sql_content);
    // 關閉資源
    fclose($fp);
    // 終止程序
    exit();
}

由上面代碼可以看出,主要的安裝都是在這個文件中進行的,至于其他的都是輔助性文件,比如sql-dfdata.sql存放數據庫數據內容等文件。

總結

安裝的話,到此結束了,基本都是接收表單參數,操作文件和數據庫的東西。其他的輔助性文件,大家可以自己看看,有空的話,我也會寫一些關于那些文件的詳解。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22086.html

相關文章

  • dedecms5.7(織夢)源碼解析程序安裝補全篇

    摘要:前言之前寫的織夢源碼解析之程序安裝一文中,還有幾個值得講解的文件沒有提到,這里說明一下。總結安裝文件,到此真的結束了。 前言 之前寫的《dedecms5.7(織夢)源碼解析之程序安裝》一文中,還有幾個值得講解的文件沒有提到,這里說明一下。 代碼 templates目錄 該文件夾中,一共有step-1.html、step-2.html、step-3.html、step-4.html、st...

    pkhope 評論0 收藏0
  • dedecms5.7(織夢)源碼解析后臺登錄

    摘要:前言在安裝完成之后,我們通常會進入后臺,那么登錄自然是必不可少的一步,下面我們就來看看,織夢的登錄在源碼中是究竟如何完成的吧。 前言 在安裝完成之后,我們通常會進入后臺,那么登錄自然是必不可少的一步,下面我們就來看看,織夢的登錄在源碼中是究竟如何完成的吧。 過程 首先,如果我們直接訪問域名/dede,那么程序走的肯定是index.php,文件源碼如下:

    calx 評論0 收藏0
  • 程序人生:dedecms偽靜態的實現方法

    摘要:一般來說,空間都是支持偽靜態的。服務器偽靜態相對簡單,直接在文件中加入相應偽靜態規則即可而服務器偽靜態的實現,則需要加載組件,然后配置文件。 操作如下:1、后臺-系統參數-核心設置-是否使用偽靜態:選擇是;注:你的網站空間是否支持偽靜態,你可以與空間的IDC商聯系一 下,如果是自己的服務器,那就更好辦了,自己動手,豐衣足食。一般來說,空間都是支持偽靜態的。Apache服務器偽靜態相對簡...

    mingde 評論0 收藏0

發表評論

0條評論

olle

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<