在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 这样就可以了