Ответы пользователя по тегу Laravel
  • Настраиваемые пользователем редиректы в Laravel как в Wordpress?

    leha_gorbunov
    @leha_gorbunov Автор вопроса
    Программист
    Пришлось все самостоятельно делать на коленке. Поделюсь по шагам.
    1. Делаем модель для настроек переадресации.
    php artisan make:model RedirectSetting -m
    2. В миграции прописываем поля old_url и new_url
    .....
      public function up()
        {
            Schema::create('redirect_settings', function (Blueprint $table) {
                $table->increments('id');
                $table->string('old_url',500);
                $table->string('new_url',500);
                $table->timestamps();
            });
        }
    .....


    3. Содзаем middleware в app/Http/Middleware/RedirectUrl2Another.php
    <?php
    
    namespace App\Http\Middleware;
    
    use Illuminate\Http\RedirectResponse;
    use App\RedirectSetting;
    use Closure;
    
    class RedirectUrl2Another
    {
        /**
         * Handle an incoming request.
         *
         * @param  \Illuminate\Http\Request $request
         * @param  \Closure $next
         * @param  string|null $guard
         *
         * @return mixed
         */
         
        public function handle($request, Closure $next, $guard = null)
        {
    	        $url = $request->getRequestUri();
    	        $redirect = RedirectSetting::where('old_url',$url)->first();
    		
    	        if($redirect&&($redirect->new_url!='')){
    		         return redirect($redirect->new_url,301);
    	        }
    	        return $next($request);
            }	
    }


    4. Добавляем в App/Http/Kernel.php

    ....
        protected $middleware = [
    		\App\Http\Middleware\RedirectUrl2Another::class,
    .....


    Интерфейс для пользователя вроде у каждого свой, это самостоятельно сделаете.
    Спасибо JhaoDa за наводку в комментах.
    Ответ написан
    4 комментария