我有一些按前缀分组的路由,如下所示。但是如果没有网址中的{lang},它将无法正常工作。
不带{lang}的网址将收到404错误。谁能猜出是什么问题?
Route::group(['namespace' => 'Site', 'prefix' => '{lang?}', 'where' => array('lang' => 'en|fa')], function()
{
if (\Request::segment(1) != 'panel' || \Request::segment(1) != 'login')
{
$locale = \Request::segment(1);
if(in_array($locale, ['fa', 'en'])) Illuminate\Support\Facades\App::setLocale($locale);
}
/*
Pages
*/
Route::get('/', 'HomeController@index') -> name('home');
Route::get('/about', 'AboutController@index') -> name('about');
Route::get('/portfolio', 'PortfolioController@index');
Route::get('/portfolio/{category_id}/cat', 'PortfolioController@indexWithCategory');
Route::get('/portfolio/loadmore/{category_id}/cat', 'PortfolioController@loadmore');
Route::get('/portfolio/loadmore', 'PortfolioController@loadmore');
Route::get('/portfolio/{id}/{title}', 'PortfolioController@show');
Route::get('/articles', 'ArticleController@index');
Route::get('/articles/{id}/', 'ArticleController@article_show');
Route::get('/articles/{id}/{title}', 'ArticleController@article_show');
Route::get('/blogs', 'ArticleController@blogs');
Route::get('/blogs/{id}', 'ArticleController@show');
Route::get('/blogs/{id}/{title}', 'ArticleController@show');
Route::get('/faq', 'ArticleController@faq');
Route::get('/contacts', 'ContactsController@index');
});
答案 0 :(得分:0)
我认为问题出在可选的lang前缀。
只需将路线分为两类: 1.带有lang前缀
或者,最好在路由的末尾使用lang而不是将其用作前缀。
答案 1 :(得分:0)
不要在前缀中使用可选参数,前缀是关于在URL开头使用fix参数的,所以现在laravel路由不知道您的fix段到底是什么!使用此路由组,您可以将任何参数或字符串作为前缀发送给该路由,例如,该路由foo / about,bar / about,xxxx / about所有这些都转到about网址