leha_gorbunov
@leha_gorbunov
Программист

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

Есть сайт на Laravel. Недавно перехал на другой домен.
Пользователи хотят самостоятельно в админке настраивать редиректы с одних адресов на другие.
Говорят, что в Wordpress есть такой функционал.
Есть ли что-то подобное для Laravel?

Если нет, то куда копать? Например я сделаю таблицу, где пользователи смогут указать с какого адреса и на какой редиректить. Вроде перед тем как отправить на 404 страницу мне надо проверить этот редирект. Куда эту проверку правильно вставить?
  • Вопрос задан
  • 1892 просмотра
Решения вопроса 1
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 за наводку в комментах.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
JhaoDa
@JhaoDa
LaravelRUS Team
1. Открываем мекку всех ларавелофилов — Packalyst.
2. В поле поиска пишем redirect.
3. Нажимаем Enter.
4. Изучаем результат.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы