问题
This essentially is a repost of this question Since the question wasn't correctly answered.
Using a basic set of self explainatory htaccess rewrites
RewriteEngine on
# Don't rewrite files or directories
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
# Rewrite everything else to index.html to allow html5 state links
RewriteRule ^ index.html [L]
Consider the following links.
1. http://localhost/clouds
2. http://localhost/wind
3. http://localhost/city/Tokyo
Links 1 and 2 are working fine upon page refresh but link 3 is only accessible through page navigation (clicking the link). If I manually pase the third link in the browser I get to the Index page, unlike link 1 and 2.
My route config:
theApp.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
"use strict";
console.log('Configuring');
$routeProvider.when('/clouds', {
templateUrl: 'Views/Cloud.html',
controller: 'cloudController'
}).when('/wind', {
templateUrl: 'Views/Wind.html',
controller: 'windController'
}).when('/city/:cityName', {
templateUrl: 'Views/City.html',
controller: 'cityController'
});
$locationProvider.html5Mode(true);
}]);
P.S. I did put . If i hadn't link 1 and 2 wouldn't be working.
EDIT: My bad I did not add the anchor tags leading to these links.
<ul class="nav navbar-nav navbar-right">
<li><a href="#"> Home</a></li>
<li><a href="/clouds"> Cloud</a></li>
<li><a href="/wind"> Wind</a></li>
<li><a href="/city/Tokyo"> CHAT!!!</a></li>
</ul>
回答1:
You have to place the <base href="/" />
At the very top of the tag.
It works, although I would like to know HOW AND WHY!!
Credits: This stackoverflow answer
来源:https://stackoverflow.com/questions/31221918/angularjs-routes-htacces-rewriting-route-parameters-not-working