Неправильное выражение для работы маршрута и ошибка возврата 404 - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть пользовательское регулярное выражение для совпадения правильное имя пользователя:

^(?=.{5,20}$)[a-zA-Z](?:[a-zA-Z0-9_]*[a-zA-Z0-9])?$

См. демо

Здесь вы можете увидеть мой список маршрутов:

Route::middleware(['userActivity'])->group(function () {
    Route::group(['prefix' => '{nickname}','where' => ['nickname' => '^(?=.{5,20}$)[a-zA-Z](?:[a-zA-Z0-9_]*[a-zA-Z0-9])?$']], function ($nickname) {
        Route::name('user.')->namespace('User')->group(function () {            
            Route::middleware(['auth', 'company'])->group(function () {
                Route::namespace('Vacancy')->group( function () {
                    Route::prefix('vacancy')->name('vacancy.')->group( function () {
                        Route::get('/manage', "VacancyController@manage")->name('manage');
                        Route::post('/save', "VacancyController@save")->name('save');
                    });
                });
            });
        });
    });
});

В этом случае, когда я иду по маршруту user.vacancy.manage:

http://website.com/user_1544080981/vacancy/manage

Ошибка возврата:

404 Страница не найдена

Когда яизменить мое регулярное выражение на:

^(?=.{5,30}$)[a-zA-Z](?:[a-zA-Z0-9_]*[a-zA-Z0-9])?$

Примечание: Изменено только регулярное выражение минимальная и максимальная длина с {5,20} до {5,30}

Вообще, когда я вижу, чтобы расстатьсяURL после имени домена url длина == 30

user_1544081143/vacancy/manage

Но регулярное выражение должно работать только для псевдонима пользователя вместо того, чтобы разделить URL без имени домена.Где у меня есть ошибки в моих маршрутах?

1 Ответ

0 голосов
/ 06 декабря 2018

Регулярное выражение, на мой взгляд, это лучший способ, чем приведенный выше.

  Route::any('{all}', function(){
    return 'It Works';
})->where('all', '.*');

Используя метод Route::fallback, вы можете определить маршрут, который будет выполняться, когда никакой другой маршрут не соответствует входящему запросу.,Как правило, необработанные запросы автоматически отображают страницу " 404 " через обработчик исключений вашего приложения.Однако, поскольку вы можете определить маршрут fallback в вашем файле routes/web.php, все промежуточное ПО в группе web промежуточного ПО будет применяться к маршруту.Конечно, вы можете добавлять дополнительное промежуточное ПО к этому маршруту по мере необходимости:

Route::fallback(function () {
    //
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...