如何设置ThinkPHP伪静态实现旧链接301跳转兼容?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1165个文字,预计阅读时间需要5分钟。
旧链接无法直接访问,需进行301重定向到新伪静态地址,否则SEO权重会丢失。ThinkPHP伪静态本身体不处理跳转,需依赖Web服务器(Nginx/Apache)或PHP层主动解析重定向——两者需配合,漏掉一个环节则301失效。
ThinkPHP 路由开启后,旧动态 URL 还能访问吗
能,但默认不会自动跳转。比如 index.php?m=home&c=user&a=info&id=123 在开启 URL_ROUTER_ON 后仍可直访,除非你显式拦截并重定向。
- ThinkPHP 不会自动把旧 URL 301 到新路由地址,它只负责「解析新 URL → 执行对应逻辑」
- 如果你已上线过动态 URL,现在切伪静态,搜索引擎和老用户书签还在用旧地址,这些请求必须被接管
- 判断是否需要跳转:看
$_SERVER['REQUEST_URI']是否匹配index.php?开头,且不含/分隔的 PATH_INFO 风格路径 - 不要在控制器里做跳转 —— 太晚,可能已输出 HTML,触发
headers already sent
Nginx 配置中如何拦截旧 URL 并 301 到新地址
必须在 location ~ \.php$ 块之前加一层判断,用 if 拦截含 ? 的请求,再用 rewrite 生成新路径。
本文共计1165个文字,预计阅读时间需要5分钟。
旧链接无法直接访问,需进行301重定向到新伪静态地址,否则SEO权重会丢失。ThinkPHP伪静态本身体不处理跳转,需依赖Web服务器(Nginx/Apache)或PHP层主动解析重定向——两者需配合,漏掉一个环节则301失效。
ThinkPHP 路由开启后,旧动态 URL 还能访问吗
能,但默认不会自动跳转。比如 index.php?m=home&c=user&a=info&id=123 在开启 URL_ROUTER_ON 后仍可直访,除非你显式拦截并重定向。
- ThinkPHP 不会自动把旧 URL 301 到新路由地址,它只负责「解析新 URL → 执行对应逻辑」
- 如果你已上线过动态 URL,现在切伪静态,搜索引擎和老用户书签还在用旧地址,这些请求必须被接管
- 判断是否需要跳转:看
$_SERVER['REQUEST_URI']是否匹配index.php?开头,且不含/分隔的 PATH_INFO 风格路径 - 不要在控制器里做跳转 —— 太晚,可能已输出 HTML,触发
headers already sent
Nginx 配置中如何拦截旧 URL 并 301 到新地址
必须在 location ~ \.php$ 块之前加一层判断,用 if 拦截含 ? 的请求,再用 rewrite 生成新路径。

