伪静态规则与 301 跳转、404 页面配置
配置 Nginx 伪静态分发、301 跳转与自定义 404 页面,统一域名与地址规范。
一、伪静态分发规则
本系统由 index.php 统一分发,需先让 Nginx 把不存在的路径交给入口处理:
location / {
try_files $uri /index.php?__route=$uri&$args;
}
该规则与 config/routes.php 配合,信息详情、分类列表等地址都由它映射。改完执行 nginx -t 校验语法,再重载生效。
若你此前用 IIS,web.config 中的 rewrite 规则不再适用,请改用上面的 Nginx 写法。
二、301 跳转:统一域名
把所有裸域名统一跳到主域名,避免同一内容出现两个地址:
server {
listen 80;
server_name 你的域名.com;
return 301 http://www.你的域名.com$request_uri;
}
多条跳转规则分别写在各自的 server 块中,逐个启用,不要在一个块里堆多条,便于排错。
三、HTTP 强制跳转 HTTPS
证书配好后,把 80 端口的访问整体跳到 https:
server {
listen 80;
server_name www.你的域名;
return 301 https://$host$request_uri;
}
若同时要做裸域名与协议两项跳转,可先跳协议再跳域名,最终都落到带 www 的同一个 HTTPS 地址上。
四、自定义 404 页面
框架已内置错误处理,模板目录备有 NotFound.html。让它接管错误页:
error_page 404 /index.php?__route=/404;
也可指向静态页 error_page 404 /404.html;,把 404.html 放到站点根目录。配置后访问一个不存在的地址,确认返回状态码为 404 且显示自定义内容。
五、检查与常见坑
- 跳转生效前先清浏览器缓存,
301会被浏览器长期缓存。 - 跳转后地址栏应只剩一个规范域名,出现循环跳转多为两条规则互相指向。
- 伪静态与 404 都不生效时,先确认改动写进了当前站点配置,而非模板里的默认配置。
- 每次改动后执行
nginx -t && nginx -s reload,语法错误会导致整站不可用。