You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel路由问题:含index.php的路由需返回404未找到页面

解决Laravel中含index.php的路由仍可访问的问题

方法一:自定义中间件拦截

  • 生成中间件:执行命令 php artisan make:middleware BlockIndexPhp
  • 打开app/Http/Middleware/BlockIndexPhp.php,修改handle方法:
public function handle(Request $request, Closure $next)
{
    if (str_starts_with($request->getPathInfo(), '/index.php')) {
        abort(404);
    }

    return $next($request);
}
  • 注册中间件:
    • 全局生效:在app/Http/Kernel.php的$middleware数组中添加\App\Http\Middleware\BlockIndexPhp::class
    • 特定路由组生效:将中间件加入$routeMiddleware数组(比如命名为block.index.php),然后在目标路由组中调用->middleware('block.index.php')

方法二:路由规则直接匹配返回404

在routes/web.php的最顶部添加以下路由(必须放在所有其他路由之前,保证优先匹配):

Route::get('index.php/{any?}', function () {
    abort(404);
})->where('any', '.*');

方法三:服务器配置层面拦截(更高效)

Apache(修改.htaccess)

在项目根目录的.htaccess文件中,现有Rewrite规则前添加:

RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteRule ^ - [R=404,L]

Nginx(修改站点配置)

在server配置块中添加:

if ($request_uri ~* "^/index.php") {
    return 404;
}

修改后重启Nginx服务生效

内容的提问来源于stack exchange,提问作者ayazBAM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 05:10:57