Ticket #289 (closed 需求: 已处理)
最数码论坛聚超值版块域名实现方案
| Reported by: | dingjianyong | Owned by: | zhangzhuojian |
|---|---|---|---|
| Priority: | 最高级(1) | Milestone: | |
| Component: | 核心模块 | Version: | BBS7.0 |
| Keywords: | Cc: | ||
| Due Date: | 06/06/2014 |
Description
最数码论坛下的fid=22是聚超值版块,由于聚超值版块是属于聚超值应用的讨论区,需要实现此版块与聚超值应用域名统一。
即:
http://piebbs.pconline.com.cn/forum-22.html
需要变为:
http://best.pconline.com.cn/bbs/
http://piebbs.pconline.com.cn/topic-xx.html
需要变为:
http://best.pconline.com.cn/bbs/topic-xx.html
Attachments
Change History
Changed 12 years ago by zhangzhuojian
-
attachment
nginx_best.conf
added
comment:1 Changed 12 years ago by zhangzhuojian
最数码论坛聚超值版块域名实现方案
一、nginx跳转配置
1、聚超值应用nginx配置:分两部分(详见附件配置文件nginx_best.conf):
(1)当请求 http://best.pconline.com.cn/bbs/,指定跳转到最数码论坛nginx的 http://piebbs.pconline.com.cn/forum-best.html
特别说明:此处跳转到forum-best.html,而不是直接请求forum.do?fid=22,是为了防止循环重定向。
(2)拦截除(1)之外的其他所有以best域名开头的请求,并分发到最数码论坛nginx中匹配的location。
2、最数码论坛nginx配置:分两部分(详见附件配置文件nginx_piebbs.conf):
(1)当请求旧域名 http://piebbs.pconline.com.cn/forum-22.html,需永久重定向至 http://best.pconline.com.cn/bbs/
(2)处理由聚超值应用nginx分发过来的请求 http://piebbs.pconline.com.cn/forum-best.html
二、实现方案
核心思路:判断forum、topic、post对象的版块fid是否等于22。
1、后台插件配置:
(1)配置聚超值版块的fid=22
(2)配置聚超值版块转换的域名(http://best.pconline.com.cn/bbs)
2、页面的处理:
(1)页面上主要通过PieHeaderTag标签处理类实现判断处理,此标签接收fid参数。如:<plugin:pieHeader fid="${forum.fid}">
(2)根据传入的fid,PieHeaderTag标签处理类会做两件事:
①产生一个key为showPieHeader的标记(value为true or false,true代表聚超值版块),并存放在pageContext,主要用于页面上对【聚超值版块的栏目条】以及【域名显示】的判断。
②将在后台插件中配置的域名( http://best.pconline.com.cn/bbs/)取出,并存放在pageContext,key为ROOT2。当①中的showPieHeader=true时,页面上会将原本系统配置的ROOT的值替换为ROOT2的值,否则ROOT的值不变。
(3)列表页的处理,主要包括:
①保证页面上的js请求正常,即同域请求;
②全站置顶贴,如果不是属于聚超值版块的,域名仍以piebbs开头;
③分页标签的处理;
④最新帖、精华帖调用接口/intf/common/_topics.jsp;
(4)帖子页的处理,主要包括:
①保证页面上的js请求正常,即同域请求;
②分页标签的处理;
③如果在聚超值版块的帖子页中删除主题,因为被删主题的fid会变为1,刷新页面后,原来页面上的域名会由best变为piebbs开头,所以需特殊处理,保证主题被删后的best域名不变。
(5)发帖/回帖页的处理,主要包括:
①保证页面上的js请求正常,即同域请求;
②时间选择器WdatePicker.js需同域引入,否则无法弹出;发html帖用到的js文件也需同域引入。
特别说明:三大页面中一些后台管理相关的链点可不做域名转换。
3、后台代码:
(1)在Functions.java工具类中定义的方法:
①isBest方法:根据forum、topic、post对象判断是否为聚超值版块。
②getRoot方法:获取后台插件配置的域名。在htmlUrl方法(将页面链接静态化)中使用。
③getDeletedTopicFid方法:获取被删主题在被删之前的fid。在聚超值版块的帖子页中删除主题时用到。
④isStartsWithPluginRoot方法:是否以插件中配置的root为前缀。在parserUrl方法中使用。
⑤重载htmlUrl(String url, int pageNo)方法,得到htmlUrl(String url, int pageNo, String root)方法:结合(2)中的函数②,用于分页标签的处理。
(2)页面上f标签库新增两个函数:
①f:root:用于全站置顶贴,如果不是属于聚超值版块的,域名仍以piebbs开头。
②f:url2best:结合(1)中的方法⑤,用于分页标签的处理。
![(please configure the [header_logo] section in trac.ini)](http://www1.pconline.com.cn/hr/2009/global/images/logo.gif)
聚超值应用nginx配置