|
|
以前发过一篇解决办法的帖子,思路没有问题,代码有些问题,重新发出来共享
对于某些php程序来说,路径不正常是因为头部加了base标签。只要找到具体位置把<base href 去掉就可以了
当时有些程序去掉也只解决了部分问题,比如discuz!x1.5,这个版本画蛇添足的地方比较多。
想一劳永逸的解决路径问题只要添加php.ini,为每个php文件插入一段代码:
register_globals = off
allow_url_fopen = On
memory_limit = 50M
max_execution_time = 120
max_input_time = 60
post_max_size = 8M
file_uploads = On
upload_max_filesize = 128M
extension_dir = "c:\php5\ext"
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
extension=php_gd2.dll
extension=php_sockets.dll
extension=php_mbstring.dll
session.save_path = "d:/temp/tmp"
session.use_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_path = /
include_path=D:\Hosting\6902410\html
session.serialize_handler = php
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="
include_path=D:\Hosting\6902410\html
auto_prepend_file = auto_prepend_file.php;
复制上面的代码,以UTF-8格式保存为php5.ini,上传到空间根目录。 注意D:\Hosting\6902410\html 是你自己的空间绝对的物理路径,改成你自己的,可别用我这个哦,在管理界面就可以看的到
假设你有一个 xxxtest.com的域名,你在空间根目录下建立了一个 xxxtest的文件夹
里面有3个子文件夹,分别对应一个站点
webpages http://xxxtest.com
bbs http://bbs.xxxtest.com
home http://home.xxxtest.com
那么新建一个auto_prepend_file.php,里面的代码如下
<?php
if(strrpos($PHP_SELF, '/')!=0){
$PHP_SELF=str_replace("/xxxtest/webpages","",$PHP_SELF);
$PHP_SELF=str_replace("/xxxtest/bbs","",$PHP_SELF);
$PHP_SELF=str_replace("/xxxtest/home","",$PHP_SELF);
}
if(strrpos($_SERVER['PHP_SELF'], '/')!=0){
$_SERVER['PHP_SELF']=str_replace("/xxxtest/webpages","",$_SERVER['PHP_SELF']);
$_SERVER['PHP_SELF']=str_replace("/xxxtest/bbd","",$_SERVER['PHP_SELF']);
$_SERVER['PHP_SELF']=str_replace("/xxxtest/home","",$_SERVER['PHP_SELF']);
}
if(strrpos($_SERVER['SCRIPT_NAME'], '/')!=0){
$_SERVER['SCRIPT_NAME']=str_replace("/xxxtest/webpages","",$_SERVER['SCRIPT_NAME']);
$_SERVER['SCRIPT_NAME']=str_replace("/xxxtest/bbs","",$_SERVER['SCRIPT_NAME']);
$_SERVER['SCRIPT_NAME']=str_replace("/xxxtest/home","",$_SERVER['SCRIPT_NAME']);
}
if(strrpos($_SERVER['REQUEST_URI'], '/')!=0){
$_SERVER['REQUEST_URI']=str_replace("/xxxtest/webpages","",$_SERVER['REQUEST_URI']);
$_SERVER['REQUEST_URI']=str_replace("/xxxtest/bbs","",$_SERVER['REQUEST_URI']);
$_SERVER['REQUEST_URI']=str_replace("/xxxtest/home","",$_SERVER['REQUEST_URI']);
}
?>
如果你有更多的网站,一样在这里添加。
再假设你在xxxtest/bbs里又建一个文件夹为 ttt,对应 ttt.xxxtest.com
那么对于ttt的处理应该在bbs的上面
应该这个写
$PHP_SELF=str_replace("/xxxtest/bbs/ttt","",$PHP_SELF);
$PHP_SELF=str_replace("/xxxtest/bbs","",$PHP_SELF);
而不能写成
$PHP_SELF=str_replace("/xxxtest/bbs","",$PHP_SELF);
$PHP_SELF=str_replace("/xxxtest/bbs/ttt","",$PHP_SELF);
这样会出错的,注意顺序
把这个文件以utf-8格式保存,上传到空间根目录
进入空间管理后台,进入iis management ,重启下缓存就可以了 refresh apppool
目前最新版本的 dz pw wp均测试通过
另外不建议嵌套文件夹。建议每个站上面除了那个主站外最好不要有任何的站。一个域名下的主站和分站最好都是平行的关系
[ 本帖最后由 sniucom 于 2010-12-13 04:17 PM 编辑 ] |
|