#laravel #routes
#laravel #маршруты
Вопрос:
Я разработал приложение для своей домашней работы, и оно основано на Vue.js, Laravel
, основано на учебниках, моя проблема основана на учебнике, который я изучил, я написал это приложение, и теперь я не могу получить доступ ни к одному маршруту, кроме моего приложения.
Я хочу создать страницу about, и когда я добавляю route в route, она переходит на страницу по умолчанию в приложении spa, которая, я сделал это на основе руководств, чтобы люди не вводили ерунду в URL, например url.com/asdasdqwe
, так как добавить исключение в строку, которая мешает мне получить доступ к другиммаршруты?
Вот код:
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/dashboard', 'HomeController@index')->name('dashboard');
// I know this line make my app to force it to don't access other routes like bottom('/about')
// Route::get('{path}',"HomeController@index")->where( 'path', '([A-zd-/_.] )?' );
// Because of top code i can't access other views that's using ('/etcroute')
Route::get('/about', function () {
return view('welcome');
});
Поэтому, когда я удаляю {path}
строку, у меня возникают некоторые проблемы в приложении SPA. итак, я ищу способ добавить исключение или заставить его позволить этим маршрутам работать с {Path}
line.
Комментарии:
1. Вы пробовали вводить /about route code выше /{path} route code?
2. @TarekAdam нет, я не знал о приоритете строк в маршрутах. Спасибо
Ответ №1:
Добро пожаловать в StackOverflow 🙂
Чтобы решить эту проблему, просто поместите свой маршрут «/ about» выше того, который соответствует регулярному выражению.
Laravel обрабатывает маршруты в порядке их перечисления, поэтому ваш маршрут «/ about» не отображается, потому что другой соответствует ему первым.
Например:
Auth::routes();
Route::get('/', function () {
return view('welcome');
});
Route::get('/about', function () {
return view('welcome');
});
Route::get('/dashboard', 'HomeController@index')->name('dashboard');
Route::get('{path}', 'HomeController@index')->where('path', '([A-zd-/_.] )?');
Ответ №2:
Маршрут:: get(‘dashboard/{any}’, [HomeController::class, ‘index’])-> где([‘any’ => ‘.*’]);
Ответ №3:
Измените свои маршруты следующим образом:
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/dashboard', 'HomeController@index')->name('dashboard');
// Because of top code i can't access other views that's using ('/etcroute')
Route::get('/about', function () {
return view('welcome');
});
Route::get('{path}',"HomeController@index")->where( 'path', '([A-zd-/_.] )?' );
Маршрутизация Laravel начинается с вершины web.php файлы и проверяет маршруты один за другим.
Итак, вам нужно добавить регулярное выражение в конце ваших статических маршрутов.