在虚拟目录下施用KingCMS

在虚拟目录下使用KingCMS

page/system/fun.asp中找到如下代码
public property get inst
        dim scriptname,l1,I1,I2,I3
        if r_inst="" then
                I1=server.mappath("/")
                I2=server.mappath("../../")
                r_inst=replace(right(I2,len(I2)-len(I1)),"\","/")&"/"
        end if
        inst=r_inst
end property

 替换为

public property get inst
        dim scriptname,l1,I1,I2,I3,n
        if r_inst="" then

                 'I1=server.mappath("/") 'disabled by xWay
                 scriptname = lcase(request.servervariables("script_name"))
                I2=lcase(server.mappath("../../"))

                'r_inst=replace(right(I2,len(I2)-len(I1)),"\","/")&"/"  'disabled by xWay
                 '----below added by xWay---------------------
                 I3 = split(trim(I2),"\")
                 l1=ubound(I3)
                 n= instr(scriptname, I3(l1))
                 if n>0 then
                       r_inst = left(scriptname, n +len(I3(l1)))
                 else
                       r_inst = "/"
                 end if
                 '---------------------------------------------
        end if
        inst=r_inst
end property

 同时在该文件第三行加上

<%Response.CodePage = 65001:Response.Charset = king_codepage%>

 如果想要完整使用虚拟目录还要对其中模块做相应修改

1。要完整使用虚拟路径,当然模版及模块的相应地方也要改。比如将模版或模块程序里的"/"路径用{king:inst/}或xking.inst代替,这里xking是类kingcms的实例(好像大都是king来着)。
2。可以把此属性的代码移到一私有函数里,只需在启动的时候运行一次,给r_inst赋值,然后由类属性inst=r_inst得到所要的安装路径。这样应该有点点提高程序效率。
3。其实虚拟路径应该用得极少。这句r_inst = "/"似乎没有机会运行。还有如果有重复的路径名,会得到错误的安装路径,如“/kingcms/kingcms/...”.有兴趣的可以再改一下。

 还有一种方法不过没试验过

在 config.asp 里 定义一下 子目录的路径
'子目录
const king_path = "/www/"

然后在
page/system/fun.asp

                       r_inst = king_path
这里判断一下就可以了
我认为这是最简单的一种方式了,不知道 哪里有没考虑到的地方

当然这里出来一个问题 那就是 

其他页面的 "../../" 必须改成 king.inst 这样就可以了