解决2.62 URL重写 后无法提取上级分类及显示当前位置

2016-07-07 15:44 来源:www.chinab4c.com 作者:ecshop专家



适用于 ECShop V2.6.2 beta1 发布(最后更新日期0225)

开启 URL重写 后无法提取上级分类及显示当前位置 解决办法如下:
打开 网站目录\includes\lib_main.php行 131,找到如下代码:
  1. /* 判断是否重写,取得文件名 */
  2. $filename = intval($GLOBALS['_CFG']['rewrite']) ? substr(basename(PHP_SELF), 0, strpos(basename(PHP_SELF),'-')) :substr(basename(PHP_SELF), 0, -4);
复制代码
替换为:

  1. /* 判断是否重写,取得文件名$filename = intval($GLOBALS['_CFG']['rewrite']) ? substr(basename(PHP_SELF), 0, strpos(basename(PHP_SELF),'-')) :substr(basename(PHP_SELF), 0, -4); */
  2. $filename = substr(basename(PHP_SELF), 0, -4);
复制代码
我的php环境参考:
服务器操作系统:WINNT (127.0.0.1)Web 服务器:Apache/2.2.3 (APMServ) PHP/5.2.0
PHP 版本:5.2.0MySQL 版本:5.0.27-community-nt

回答:
是不是没人出现这样的问题?

非常感谢。这实际上是一个官方bug

非常感谢。安装你的方法解决了这个问题。

非常感谢。安装你的方法解决了这个问题。
winyong 发表于 2009-2-28 14:20

刚发现,非常感谢!

楼上的改法有恢复成了2.6.1的写法了。
官方对这里进行了修改,肯定是为了解决导航栏显示的问题,
只是目前这种写法还不能很好的解决,但是官方思路是正确的。
如果按照你的该法,当重写之后,点击商品进入商品详情页后,
例如积分商城或者促销活动的当前位置和导航栏都有可能出现异常。
如果导航栏的链接填写的是重写后的地址的话,也是会显示异常的。

自己分析了下,觉得正确的解决方法应该如下:
  1. /* 判断是否重写,取得文件名 */
  2. $filename = intval($GLOBALS['_CFG']['rewrite']) ? substr(basename(PHP_SELF), 0, strpos(basename(PHP_SELF),'-')) :substr(basename(PHP_SELF), 0, -4);
复制代码


将上面的改为:


  1. /* 判断是否重写,取得文件名 */
  2. $cur_url = basename(PHP_SELF);
  3. if (intval($GLOBALS['_CFG']['rewrite']))
  4. {
  5. $filename = strpos($cur_url,'-') ? substr($cur_url, 0, strpos($cur_url,'-')) : substr($cur_url, 0, -4);
  6. }
  7. else
  8. {
  9. $filename = substr($cur_url, 0, -4);
  10. }
复制代码


这样便可以很好的解决冲突的问题。
各位可以测试下。如有问题,欢迎加QQ进一步讨论。

谢谢了,改好了
搜索引擎应该友好点了
google说我的重复太多,
呵呵
估计就是这个标题引起的
过几天看看效果