第二十二章 地区分站与 IP 跳转

Ju7CMS 用户手册 · 发布于 2026-10-27 · 更新于 2026-10-27

地区分站只加城市入口,不是多份网站;访问落在哪个城市、三个开关、IP 定位库、新增城市与拼音重名。

分站不是多份网站

「地区分站」插件做的是一件事:给同一个站点加几个城市入口,让台州以外的访客也能看到带自己城市名的首页。程序、数据库、模板只有一套,城市目录里放的只是一个很小的入口壳。

城市目录城市目录
椒江/JIAOJIANG/温岭/WENLING/
黄岩/HUANGYAN/玉环/YUHUAN/
路桥/LUQIAO/临海/LINHAI/
三门/SANMEN/仙居/XIANJU/
天台/TIANTAI/

每个目录里只有五样东西:andvar.asp、index.asp、list/、show/、search/。其中 andvar.asp 是唯一有差别的地方——它把 webroot 改成 /城市目录/,把 c_name 改成城市名。首页、列表、详情仍然走主站同一套程序与模板。

所以「改分站」和「改主站」是同一个动作:模板改一次全部分站生效。分站目录里的文件不要单独改,下次生成或升级会被覆盖,也会让两套行为分叉。

访问落在哪个城市

  1. 地址里带了城市:直接访问 /WENLING/,就是温岭分站。
  2. 访客手动选过:页头的城市切换会带上 ?set_city=城市拼音,程序记一个 user_city cookie,之后不再按 IP 改他的选择。
  3. 自动跳过一次:按 IP 跳转后会写 auto_city,避免访客每点一个页面就被跳一次。
  4. 都没有:按 IP 定位到最近的已开通城市,定位不到就留在主站。

三个开关

开关在哪作用
IP 自动跳转地区分站 → 设置(配置项 city_auto)本站为开启。关闭后仍可手动选城市,只是不再自动跳
可信代理地区配置(配置项 ip_proxy)本站为空。为空时只认直连地址,不信任任何 X-Forwarded-For
城市启用插件里的城市列表(islock)关掉某个城市,它就退出切换列表,也不再作为跳转目标

IP 定位靠一个离线库

定位数据在 /plug/city/iplocation.mdb,是纯 IPv4 的离线库,查询在本机完成,不出网、不调用第三方接口。两条最常见的定位失败原因:

  • 访客地址是内网或回环(127.0.0.1、192.168.*):本机测试时必然看到这个结果,不代表线上也这样。
  • 前面有 CDN 或反向代理:真实地址在 X-Forwarded-For 里,但 ip_proxy 为空时程序不采信,于是把代理的地址当访客地址。要按 IP 跳转,必须把代理回源地址填进「可信代理」。

不要为了「测试方便」把 ip_proxy 填成 * 或任意值。那等于允许任何人伪造来源地址,既能绕过按地区的内容限制,也能污染访问统计。

新增一个城市

  1. 「功能 → 地区分站」新增城市,填城市名与拼音目录名(大写,例如 WENLING)。
  2. 在站点根目录建同名目录,把已有城市目录里的五个入口复制过去。
  3. 只改新目录的 andvar.asp:webroot 与 c_name 换成新城市。
  4. 回到插件里重建定位索引,等缓存过期(约 5 分钟)后再测。
  5. 打开「地区分站」列表确认它已启用,再从前台切换列表点一次。

下线一个城市:先在城市列表里关掉,再把根目录下的城市目录改名(不要直接删,留一周观察),最后确认没有站内链接还指向它。

拼音重名与误匹配

城市目录名由拼音生成,而拼音表按 GBK 区位编码,天然会有同音。两个不同地名算出同一个目录名时,后建的会覆盖先建的。处理办法是给其中一个手填拼音目录名,不要指望程序自动区分。

另一个坑是「候选地名吞掉了上级地名」:例如「三门」会命中「三门峡」。程序现在的规则是——候选词前面被吞掉的部分必须恰好是一个完整的地名,才允许匹配。新增城市后如果发现跳错,先看这一条,再怀疑定位库。

给搜索引擎的分站地图

city.xml 是分站的站点地图,和主站的 sitemap1.xml 分开。它由插件生成,写入的是生成当时的站点网址;换域名后必须重新生成,否则里面还是旧地址。已经上线的站,生成后到百度/必应后台各提交一次即可。

常见问题

现象先查什么
换了城市,首页标题没变城市目录的 andvar.asp 里 c_name 是否改了;模板是否写死了城市名
一直不自动跳转city_auto 是否开启;访问地址是不是内网;是否有 user_city cookie
跳到了错误的城市先看是不是「三门 / 三门峡」这类前缀误匹配,再看定位库版本
分站打开没有样式分站目录的 webroot 写错,CSS 路径被拼到了错误位置
切换列表里少了城市该城市被停用,或缓存还没过期

接下来怎么读

  1. 要按地区给不同内容:先读第十二章,理解栏目结构再开分站栏目。
  2. 要限制某些地区访问:看第三十七章的访问限制。
  3. 分站地图与主站地图的关系:看第三十四章。