Я в настоящее время написания инструмент для управления определенных статей, технической документации, ...Laravel всегда перенаправляет определенные маршруты
Каждая статья имеет номер детали, который всегда в формате xxxx-xxx-xx
, где x
является цифрой , В настоящее время моя маршрутизация осуществляется следующим образом:
admin/{partnumber} (List all documentation entries)
admin/{partnumber}/new (New documentation entry)
admin/{partnumber}/edit (Edit the article itself)
admin/{partnumber}/{id} (Edit the documentation with the given id for the article)
Где partnumber
должно соответствовать следующему регулярному выражению:
(\d{4}-\d{3}-\d{2}|\d{9})
Это, так что я не обязательно должен ввести в тире. Однако, чтобы мои URL-адреса выглядели немного проще и сделали их более понятными, я бы хотел автоматически перенаправить введенный URL-адрес, но добавьте тире.
example.com/admin/123456789 => example.com/admin/1234-567-89
example.com/admin/123456789/new => example.com/admin/1234-567-89/new
...
Я полагал, что я мог бы создать маршрут для \d{9}
отдельно, как следующее:
Route::get('admin/{partnumber}',
'[email protected]')
->where('partnumber', '\d{9}');
А затем выполнить переадресацию в функции этого контроллера. Однако это будет работать только для admin/{partnumber}
, а не для любого другого маршрута.
Я не могу придумать, как это сделать, за исключением того, что каждая функция для всех маршрутов дважды, раз только для перенаправления. Это кажется мне немного подробным и не может быть решением.
Еще одна идея, которую я имел, заключалась в создании промежуточного программного обеспечения для указанных маршрутов и перенаправления на маршруты, но с разными параметрами. Но это не похоже на хороший вариант использования промежуточного программного обеспечения, на мой взгляд.
Я что-то упустил? Это вообще возможно?
Почему бы не использовать простой .htaccess, переписывающий такие URL-адреса? Вы попробовали это? – Luceos
@ Luceos Я раньше не думал об этом, но попробую. Было бы здорово, если бы я мог указать его в самом Laravel, хотя, не касаясь '.htaccess'. Делает это более склонным к ошибкам из-за другого файла, который я не регулярно проверяю, изменяю ли я маршруты. – Padarom
Я понимаю, но это лучше подходит для ваших нужд. Я считаю, что сравнение одного правила htaccess с несколькими определениями маршрутов хорошо * shrug * – Luceos