Обновление страницы angularjs laravel дает ошибку 404

Не могли бы вы сказать мне, как можно решить проблему с 404notfoundexception, когда я пытаюсь перезагрузить URL-адреса, найденные с помощью ngRouteProvider? Например..

    $routeProvider.when('/about',{
    templateUrl:'partials/about.php',
    controller: 'pageController'
});

если я нажимаю / о с URL, он отображает страницу о. Однако, когда я перезагружаю страницу, она выдает ошибку 404. Я увидел, что мне нужно будет отредактировать мой файл.htaccess. Однако я не совсем уверен, какой код добавить.

Вот мой текущий файл.htaccess. Обратите внимание, я пытался добавить что-то, что не работает.

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>
#Options +FollowSymLinks
RewriteEngine On

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]


# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

#handle angular route
#RewriteCond %{REQUEST_URI} !index
#RewriteRule (.*) index.html [L]

Маршруты Ларавела:

/****** Api *******/

Route::group([
    'prefix' =>'/api',
     'middleware' => 'web'
    ], function(){

    Route::get('/post/{id?}',[
        'uses'=>'postApiController@getPost',
        'as'=>'apiPost'
        ]); 
    Route::get('/slug/{slug?}',[
        'uses'=>'postApiController@getOnePost',
        'as'=>'apiPostSlug'
        ]); 
    Route::get('/addition/{slug?}',[
        'uses'=>'postApiController@getOnePostAddition',
        'as'=>'apiAdditionSlug'
        ]);

    Route::get('/posts',[
        'uses'=>'postApiController@getAllPost',
        'as'=>'api.allPost'
        ]);
    Route::get('/contacts',[
        'uses'=>'ContactController@getContactList',
        'as'=>'api.getContactList'
        ]);
    Route::get('/nextslug/{id}',[
        'uses'=>'postApiController@getNextRowSlug',
        'as'=>'api.getNextSlug'
    ]);
    Route::post('/mail',[
        'uses'=>'ContactController@postContact',
        'as'=>'api.postContact'
        ]);
    });

/***** Api ends *****/

Route::get('/',[
    'uses'=>'siteController@index',
    'as'=>'index'
]);

Заранее спасибо:)

редактировать

Я добавил следующий код в мой маршрут Laravel:

    /***** Handle missing ****/
Route::get('/pages/{slug?}',function($slug){
    return view('index');
});

Это работает хорошо сейчас!! Я думаю, что это решает

2 ответа

Решение

Для всех маршрутов в угловых вам нужно направить на индекс действия в Laravel.

Так что вам нужно добавить:

Route::get('/about',[
   'uses'=>'siteController@index',
   'as'=>'index'
]);

Все эти URL-адреса будут перенаправлены на ту же точку входа, представление отредактировано действием siteController@index и тогда угловой маршрутизатор будет обрабатывать маршрутизацию в нужное место.

ОБНОВИТЬ

Вы избегаете шаблонов, вы можете сделать что-то вроде этого:

foreach(['/', '/about', '/something'] as $route){
    Route::get($route,[
        'uses'=>'siteController@index',
        'as'=>'index'
     ]);
}

Вы можете добавить следующий код в web.php после всех маршрутов.

      Route::get('/{any}', function () {
return view('welcome');})->where('any', '.*');

Приветствие это основной файл представления (файл представления — resources/views/welcome.blade.php) в Laravel.

Это может кому-то помочь.

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