web.php中有方法把所有網址導向指定頁面?

laravel:10.x
php:8.2

請問web.php中或有哪種簡單快速方法,可把所有網址導向指定頁面?
舉例有個網站 abc3321.com
每個月固定一天的半夜2:00~6:00要進行網站的維護優化,屆時網站的所有網址皆被導向到 abcz321.com/maintenance
網站有8種主題A,分數個主題B,在分數個主題C,例如
/article ,主題A
/article/xx ,主題B
/article/xx/zz ,主題C
/article/xx/zz/aa
含get和post總共有1百多組

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

全局中间件,或者

// gpt告诉的测试了下好像可以,替换下固定方法指向指定页面
Route::any('{any}', [\App\Http\Controllers\IndexController::class, 'appTest'])->where('any', '.*');

但是你是每月固定时间而不是手动发布控制的,建议还是一楼说的中间件吧,能算下当前是否是指定日,指定时间段

3个月前 评论
讨论数量: 9

全局中间件跳转可行

3个月前 评论

这种场景就应该web服务层处理,例如在nginx/openrestry上处理,而不是放在业务上处理。

3个月前 评论

不应该在入口文件去处理,应该是中间件去处理,例如中间件判断的就是当前系统的状态,如果是维护状态,就进行操作,然后跳转到你指定路由或者路由组,或者直接在nginx上处理。

如果不想太折腾的话,还是中间件最适合,对原有代码影响小。

3个月前 评论

能寫個範例給予參考?

3个月前 评论

全局中间件,或者

// gpt告诉的测试了下好像可以,替换下固定方法指向指定页面
Route::any('{any}', [\App\Http\Controllers\IndexController::class, 'appTest'])->where('any', '.*');

但是你是每月固定时间而不是手动发布控制的,建议还是一楼说的中间件吧,能算下当前是否是指定日,指定时间段

3个月前 评论
sanders

可能楼主的意思是进入维护模式,Laravel 框架有这个功能:配置信息《Laravel 10 中文文档》

不过,楼主最后列出的几个地址我没懂是什么意思。

3个月前 评论
陈先生

完全可以使用维护模式来操作。

  1. maintenance 可以自定义页面
  2. 操作简单
  3. maintenance 也提供了通过简单的 pin 码来继续访问的操作
3个月前 评论

写个中间件,当路由匹配到上面的route规则,直接重定向到你目标的地址,大概这样:


<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;

class HelloMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param \Illuminate\Http\Request $request
     * @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse)  $next
     * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
     */
    public function handle(Request $request, Closure $next)
    {
       if(!时间区间){
           return $next($request);
   }

if(时间区间 && in_array('路由',['目标路由A’,'目标路由B...])){

return 重定向到xxx

}

        return $response;
    }

}
3个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!