鑫吧首页
鑫吧案例
模板建站
资料下载
建站技术
联系鑫吧

PHPCMSV9完美解决栏目绑定二级域名后内容页url出错的问题

2017-04-08 09:57:30   来源:   评论:0 点击:

栏目绑定二级域名后内容页url会多出一个绑定的目录

如news.xxx.com 绑定了目录news
内容页会多出news.xxx.com/news/cat/xxxx.html红色部分


解决办法:
修改modules/content/classes/url.calss.php文件

  1. $dir = $this->categorys[$this->categorys[$catid]['parentid']]['catdir'].'/'.$dir;
复制代码

修改为
  1. if (strpos($this->categorys[$catid]['url'], '://')===false || strpos($this->categorys[$catid]['url'], '?')!==false) {
  2.                                 $dir = $this->categorys[$this->categorys[$catid]['parentid']]['catdir'].'/'.$dir;
  3.                         }       
复制代码

最近在做项目功能时,遇到一个问题。我把一级栏目设置成二级域名,比如新闻给设置为 news.webfxb.com,设置二级域名都正常,就是生成内容页后,导致URL路径有问题,多了一层目录,

例如:http://news.webfxb.com/news/20140727/123_345.html

这明显就是路径问题了,虽然这样也能正常访问,但总给人感觉是多一级。

我在百度上翻了一些资料,虽然也有人遇到过这种问题,也排出解决办法,但真正解决这个问题的没有!如:

http://bbs.phpcms.cn/forum.php?m ... F2%C3%FB&page=1

这个人的解决办法真是瞎改啊,这样改会影响其他的操作。
既然无法找到真正的解决方法,那我只能亲自动手了,我就坚定改源码了。

那咱们就找到这个文件:

打开/phpcms/modules/content/classes/url.class.php文件

然后找到如下所示的代码:


  1. if ($domain_dir && $category['isdomain']) {
  2.         $url_arr[1] = $html_root.'/'.$domain_dir.$urls;
  3.         $url_arr[0] = $url.$urls;
  4. } else {
  5.         $url_arr[1] = $html_root.'/'.$urls;
  6.         $url_arr[0] = WEB_PATH == '/' ? $match_url.$html_root.'/'.$urls : $match_url.rtrim(WEB_PATH,'/').$html_root.'/'.$urls;
  7. }
复制代码


能看到上面的代码,然后咱们分析下。
第一个if里面的是用来判断是否二级域名的;
"elseif($content_ishtml)" 是只单纯生成静态的,就是不带二级域名的情况;
最后这个else是用来判断动态链接的。

所以咱们要改的位置就在第一个if下面。

从代码能看到确实多加了一级。解决办法如下:

  1. if ($domain_dir && $category['isdomain']) {
  2.         //去除多一级目录的问题
  3.         $new_urls = explode('/', $urls, 2);
  4.         $urls = $new_urls[1];
  5.                                        
  6.         $url_arr[1] = $html_root.'/'.$domain_dir.$urls;
  7.         $url_arr[0] = $url.$urls;
  8. } else {
  9.         $url_arr[1] = $html_root.'/'.$urls;
  10.         $url_arr[0] = WEB_PATH == '/' ? $match_url.$html_root.'/'.$urls : $match_url.rtrim(WEB_PATH,'/').$html_root.'/'.$urls;
  11. }
复制代码


修复的部分我已添加了注释,如下:

  1. //去除多一级目录的问题
  2. $new_urls = explode('/', $urls, 2);
  3. $urls = $new_urls[1];
复制代码


您加入该代码后,就可以到后台去尝试啦。直接在后台先更新url,然后再更新栏目页和内容页就能搞定这个问题啦。
如果以上仍看不清楚,可以参考我的站的这篇文章:

 
----------------------------------------------------------------------------------------

栏目绑定二级域名,子目录绑定二级域名的方法

相关热词搜索:二级域名 栏目 内容

我要分享给他:

喜欢就点我->[收藏]
<