angularjs laravel页面刷新给出404错误

时间:2016-07-28 13:09:05

标签: angularjs laravel route-provider

当我尝试重新加载使用ngRouteProvider找到的网址时,您能否告诉我如何解决404notfoundexception的问题? 例如..

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

如果我从网址点击/关于,它会显示关于页面。但是,当我重新加载页面时,它会给出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]

Laravel Routes:

/****** 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');
});

现在运作良好!!我认为这解决了它

1 个答案:

答案 0 :(得分:1)

对于角度中的所有路线,您需要在Laravel中路由到索引操作。

所以你需要添加:

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

所有这些网址将被重定向到相同的入口点,视图由动作siteController@index呈现,然后角度路由器将处理路由到正确的位置。

更新

你可以避免样板,你可以这样做:

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