Angular route with html5Mode giving 'Not found

2019-02-05 13:40发布

I made some Angular routes as shown in the code bellow.

app.config(function($routeProvider, $locationProvider, $provide) {
    $routeProvider
    .when('/', {
         templateUrl: 'home.html',
         controller: 'AppCtrl'
    });
    .when('/portfolio', {
        templateUrl: 'portfolio.html',
        controller: 'AppCtrl'
    })
    $provide.decorator('$sniffer', function($delegate) {
         $delegate.history = historyCompatCheck();
         return $delegate;
    });
    $locationProvider.html5Mode(true);
});

This works fine, after i set the base href to be "/" it accepted an anchor with the href of "/portfolio", but when i go to "http://url.com/portfiolo" or try to reload the page when i'm on the portfolio route it will give me an server error. Can i do something about this?

Thanks in advance.

2条回答
你好瞎i
2楼-- · 2019-02-05 14:02
#BEGIN

Options +FollowSymLinks

<ifModule mod_rewrite.c>
    RewriteEngine on

    # Don't rewrite files or directories
     RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} -s [OR]
   RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]

   RewriteRule ^(.*) your root folder/index.php [NC,L]

 </ifModule>
   #END

its working 100% <base href="/"></base> also add to your index.html code in <head>section

查看更多
太酷不给撩
3楼-- · 2019-02-05 14:08

I solved it myself.. you always need to make a .htaccess file in the root of your project. Containing the following:

 <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
 </IfModule>
查看更多
登录 后发表回答