新手用Laravel搭博客架构要注意啥_避坑指南

新手用 Laravel 搭博客最常卡在路由未生效、模型关系查不到数据、表单提交 419 错误三类问题;根源是默认配置与直觉偏差:路由须置于 routes/web.php 或显式加 web 中间件,Post 模型需声明 $fillable,分页 404 需检查 APP_URL 和服务器重写规则。

新手用 Laravel 搭博客架构,最常卡在「路由没生效」「模型关系写对了但查不出数据」「表单提交后 419 错误」这三类问题上——不是 Laravel 太难,而是默认配置和直觉有偏差,得先绕开几个默认陷阱。

路由定义必须显式加 web 中间件组

Laravel 8+ 默认把 routes/web.php 自动套进 web 中间件组,但如果你手抖新建了 routes/blog.php 或直接在 routes/api.php 里写博客路由,就会发现:CSRF 验证失败、Session 读不到、重定向不带 Flash 数据。

  • 所有面向浏览器的博客路由(如 /posts、/posts/create)必须放在 routes/web.php,或手动用 Route::middleware('web') 包裹
  • api.php 专供无状态接口,不带 session 和 CSRF,别混用
  • 检查 app/Providers/RouteServiceProvider.php 的 mapWebRoutes() 是否仍加载 web.php

 Post 模型要主动声明 $fillable 或用 create() 前校验

博客文章创建时用 Post::create($request->all()) 却报错 “Add [title] to fillable property”,是因为 Laravel 默认禁止批量赋值(mass assignment),防止字段被恶意注入。

  • 在 app/Models/Post.php 中明确列出可批量写入字段:复制AI写代码

    protected$fillable= ['title','slug','content','published_at'];

  • 不要用 $guarded = [] 开全库,尤其上线后有用户投稿功能时极危险
  • 如果用 Post::firstOrCreate() 或 updateOrCreate(),同样受 $fillable 约束

分页链接 404?检查 APP_URL 和 Nginx/Apache 重写规则

本地 php artisan serve 跑得好好的,部署到 Nginx 后点分页链接跳转成 /page/2 但返回 404——大概率是 URL 生成或服务器配置没对齐。

  • 确保 .env 中 APP_URL=http://your-blog.com(末尾不加斜杠);改完运行 php artisan config:clear
  • Nginx 需包含 Laravel 推荐的 try_files $uri $uri/ /index.php?$query_string;,否则 /posts?page=2 这类带 query 的能过,但 /posts/page/2(用 ->withPath() 自定义路径时)会 404
  • Apache 用户确认 .htaccess 文件存在且 mod_rewrite 已启用

真正卡住新手的,往往不是语法错误,而是这些“默认不报错但就是不动”的配置断层。Laravel 的优雅建立在约定之上,而博客这类 CRUD 密集型应用,最容易在中间件、模型保护、URL 构建这三个环节悄悄越界。


×
请选择支付方式
虚拟产品,一经支付,概不退款!