Перенаправить маршрут с index.php? Id = {id} на / index / {slug}

Я конвертирую старый проект в laravel и хочу создать 301-й маршрут для перенаправления старого URL-адреса.

старый URL: example.com/index.php?id = {id}

новый URL: example.com/index/{slug}

Я пробую что-то вроде:

Route::get('index.php?id = {id}', function($id){
    $slug = {where I select slug from id}
    return Redirect::to('/index/'.$slug, 301);
});

Но не работает, URL не распознается.

что ты имеешь в виду под {запросом} ?? Вы имеете в виду id, который передается?

Jigs1212 23.03.2018 10:16

запрос на получение slug var

natas 23.03.2018 10:17

не понял тебя .

Jigs1212 23.03.2018 10:17

Это не актуально, проблема в том, что URL-адрес не распознается, а не запрос, который я использую для получения переменной slug, передающей идентификатор

natas 23.03.2018 10:19

в чем ошибка

Jigs1212 23.03.2018 10:23

Извините, страница, которую вы ищете, не может быть найдена.

natas 23.03.2018 10:25
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
6
206
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы делаете это немного неправильно, для этого вам нужен не маршрут, а промежуточное ПО.

php artisan make:middleware Redirect

public function handle( $request, Closure $next )
{
    if ( preg_match( '#index.php\?id=(\d+)#is', $request->fullurl(), $matches ) ) {
        return redirect()->to( "/index/{$matches[1]}", 301 );
    }
    return $next( $request );
}

добавить промежуточное ПО в Http Kernel

в защищенном промежуточном программном обеспечении $?

natas 23.03.2018 11:15

Я установил лучший ответ, но регулярное выражение не работает в моем случае, мне пришлось изменить на: if (preg_match ('/index.php\?id=(\d+)/', $ request-> fullurl (), $ matches)) { (БЛАГОДАРНОСТЬ!)

natas 23.03.2018 11:35

У меня не было времени на тесты. Я обновил ответ, с уважением.

Luke Snowden 23.03.2018 11:43

Другие вопросы по теме