问题
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.
回答1:
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>
回答2:
#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
来源:https://stackoverflow.com/questions/18452832/angular-route-with-html5mode-giving-not-found-page-after-reload