天空小小岛技术论坛

 找回密码
 注册
搜索
查看: 8194|回复: 0
打印 上一主题 下一主题

[PHP] shopex 装在 rewrite 目录下的路径问题解决方案

[复制链接]
跳转到指定楼层
1#
一粒米 发表于 2012-4-15 16:46:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题出现

有些空间不支持绑定到子目录,于是大牛们想到了 rewrite 来绑定子目录

规则举例
  1. # shop.tkxxd.net
  2. RewriteCond %{REQUEST_URI} !^/shop.tkxxd.net/.*
  3. RewriteCond %{HTTP_HOST} =shop.tkxxd.net
  4. RewriteRule ^(.*) /shop.tkxxd.net/$1 [L]
复制代码
将 shop.tkxxd.net 绑定到 shop.tkxxd.net/ 目录里去。

但是装 shopex 后,会发现一件悲剧的事情,就是链接里出现了类似
http://shop.tkxxd.net/shop.tkxxd.net/xxx

把实际的安装目录也给带进来了。

寻找原因

解开 shopex 的包,可以看到这种代码
  1. $this->_base_url = "http://".$_SERVER['HTTP_HOST'].substr( PHP_SELF, 0, strrpos( PHP_SELF, "/" ) + 1 );
复制代码
  1. define( "PHP_SELF", dirname( $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'] ) );
复制代码
可以知道 shopex 主要是通过 $_SERVER['PHP_SELF'] 来确定访问路径的

解决方案
知道这么多后,接下来要怎么做呢?
config/config.php 这个文件基本上都要引入吧,而且还不是加密的(解密出来的文件只供阅读,真正使用还有一些距离),这样邪恶的插入类似以下的代码
  1. $_SERVER['PHP_SELF'] = str_replace('/shop.tkxxd.net', '', $_SERVER['PHP_SELF']);
复制代码
后台 =》关于 =》清除缓存

一切搞定
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|天空小小岛  |京ICP备2025130156号|

GMT+8, 2025-6-22 16:10 , Processed in 0.151028 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表