Ответ 1
Вам нужно настроить apache на перенаправить все пути в корневой каталог.
При прямом открытии http://localhost/teach/overview
ваш веб-сервер пытается обслуживать страницу с маршрута, который не определен.
Когда в приложении angular вы нажимаете ссылку с href-контуром http://localhost/teach/overview
, angular шагов, и вместо того, чтобы позволить вашему браузеру запрашивать страницу с сервера, она перехватывает ваше событие click и переходит на ваш routeProvider, чтобы посмотреть, какой вид на стороне клиента отображать (вот почему они называют его "одностраничными приложениями" ). Вот почему ваши ссылки работают до тех пор, пока вы не пытаетесь открыть их напрямую.
Помимо конфигурации apache вы также можете использовать тег base
с значением href /teach/
:
<base href="/teach/" />
так что вы можете иметь свой маршрутProvider не ограниченным фиксированным префиксом:
teachApp.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
$routeProvider.
when('/', {templateUrl: 'views/login_view.html'}).
when('/overview', {templateUrl: 'views/overview_view.html'}).
when('/users', {templateUrl: 'views/users_view.html'}).
otherwise({redirectTo: '/'});
$locationProvider.html5Mode(true);
}]);