帝国 CMS 怎么设置 301 重定向

liulian
liulian 正式会员超兽战士
发布于 2026-10-08 01:14 ·1 浏览 ·0 回复

学完这篇,你能在帝国 CMS 里把旧地址正确地 301 到新地址,并且知道哪种情况该用后台设置、哪种情况必须改服务器规则。

第一步:先分清你要重定向的是什么

301 是「永久跳转」,搜索引擎会把旧地址的权重传给新地址。帝国 CMS 里能落地的场景只有三类:

  1. 整个域名换掉(比如 example.com → www.example.com,或 HTTP → HTTPS)
  2. 某个栏目/某个页面换了地址(栏目改名、目录调整)
  3. 改版后一批旧文章地址失效(旧 ID 页面对应新静态页)

三类对应的做法完全不同,先对号入座再动手,别一上来就改代码。

第二步:栏目和内容级别的跳转,用后台自带功能

帝国 CMS 后台自带「转向地址」,适合处理单个栏目。入口是:

**后台 → 栏目 → 管理栏目 → 找到目标栏目点「修改」→ 在「基本属性」区域找到「转向地址」输入框,填上新地址(例如 /news/),保存后 后台 → 栏目 → 更新栏目页** 重新生成。

访问这个栏目时就会跳到新地址。

注意:帝国 CMS 这个自带转向默认是 302 临时跳转(部分版本甚至输出的是 meta refresh),不是 301。搜索引擎不会把权重传过去。只做内部引导可以,做 SEO 改版不行。

如果非要把它改成 301,做法是在 e/class/ 目录里全文搜索 header("Location,找到输出跳转的那段,在 Location 之前补一行:

header("HTTP/1.1 301 Moved Permanently");
header("Location: $url");

改完必须重新生成栏目页,并且升级帝国 CMS 时会被覆盖,要留档。

第三步:域名级 301,直接改服务器规则

这是最可靠的做法,和帝国 CMS 版本无关。

Apache 环境,在网站根目录的 .htaccess 里加:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

Nginx 环境,在站点配置里加一个 server 块:

server {
    listen 80;
    server_name example.com;
    return 301 https://www.example.com$request_uri;
}

改完执行 nginx -t 检查语法,再 nginx -s reload。

注意:Nginx 改完配置一定要 reload,光保存文件不生效。Apache 的 .htaccess 需要确认站点配置里 AllowOverride All,否则规则会被忽略。

第四步:旧文章地址批量 301

帝国 CMS 的动态地址形如 /e/action/ShowInfo.php?classid=1&id=123 或 /plus/view.php?aid=123。这类带查询字符串的地址,.htaccess 里的 Redirect 301 指令匹配不到,必须用 RewriteRule:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^aid=123$
RewriteRule ^plus/view\.php$ https://www.example.com/news/2024/abc.html? [R=301,L]

注意规则末尾那个单独的 ?,它的作用是丢掉原来的查询字符串,不加的话新地址后面会拖一串 ?aid=123。

如果旧地址是帝国 CMS 生成的静态 HTML,直接写就行:

Redirect 301 /old/2020/123.html https://www.example.com/news/2024/abc.html

第五步:验证跳转是不是真 301

别只看浏览器跳没跳,要看状态码。命令行执行:

curl -I "https://www.example.com/old/2020/123.html"

返回第一行必须是 HTTP/1.1 301 Moved Permanently,并且有一行 Location: 新地址。如果返回 302 或者 200,说明规则没生效或写错了。

图形化的办法是 Chrome 按 F12 打开开发者工具 → Network 面板 → 勾选 Preserve log → 访问旧地址 → 看这条请求的 Status 列。

小结

  • 先分类:域名级、栏目级、文章级,做法不同
  • 帝国 CMS 后台的「转向地址」入口在 栏目 → 管理栏目 → 修改,默认是 302,做 SEO 不够
  • 域名级和批量地址的 301,一律改 .htaccess(Apache)或 server 块(Nginx),别依赖 CMS
  • 带 ? 参数的旧地址必须用 RewriteCond %{QUERY_STRING} 匹配,规则末尾加 ? 丢弃原参数
  • 改完一定要用 curl -I 确认返回的是 301 而不是 302
版权声明:本文来自 GJ站长论坛《帝国 CMS 怎么设置 301 重定向》
原文链接:https://www.gj0.com/thread-662.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~