由于很多主机商并不支持域名绑定到子目录,所以我们只能通过.htaccess或者是httpd.ini来进行URL重写
这样可以间接的实现子目录的绑定,但是由于通过PHP程序变量获取到的目录仍旧是真实的目录
所以会导致大量的开源程序运行不正常,例如我们把bbs.abc.com绑定到bbs目录下,当我们安装discuz的时候,就会跳转到bbs.abc.com/bbs/install,这样显然是访问不到的
所以我们必须要对discuz做一些必要的处理
安装的时候并不麻烦,直接删掉/bbs即可安装
安装完毕后进入/source/class/discuz目录,打开discuz_application.php文件,并查找$_G['siteurl'] =
discuz X3.1是在188行
如果找到类似下面代码,便是正确的:
|
$_G
[
'siteurl'
]
=
dhtmlspecialchars
(
'http'
.
(
$_G
[
'isHTTPS'
]
?
's'
:
''
)
.
'://'
.
$_SERVER
[
'HTTP_HOST'
]
.
$sitepath
.
'/'
)
;
|
然后把它修改成:
|
$_G
[
'siteurl'
]
=
dhtmlspecialchars
(
'http'
.
(
$_G
[
'isHTTPS'
]
?
's'
:
''
)
.
'://'
.
$_SERVER
[
'HTTP_HOST'
]
.
'/'
)
;
|
这样一来discuz便可以正常运行了,不过由于discuz还绑定了Ucenter,所以我们还需要对UC作相应的修改
找到/uc_server目录下的avater.php、index.php、admin.php, 打开他们,并查找’UC_API’
应该会找到类似下面的代码:
|
define
(
'UC_API'
,
strtolower
(
(
$_SERVER
[
'HTTPS'
]
==
'on'
?
'https'
:
'http'
)
.
'://'
.
$_SERVER
[
'HTTP_HOST'
]
.
substr
(
$_SERVER
[
'PHP_SELF'
]
,
0
,
strrpos
(
$_SERVER
[
'PHP_SELF'
]
,
'/'
)
)
)
)
;
|
替换为:
|
define
(
'UC_API'
,
strtolower
(
(
$_SERVER
[
'HTTPS'
]
==
'on'
?
'https'
:
'http'
)
.
'://'
.
$_SERVER
[
'HTTP_HOST'
]
.
'/uc_server/'
)
)
;
|
这样修改之后,discuz就完美运行在子目录下面了!
---Welcome to jmchn.com