Вложенные представления UI-маршрутизатора AngularJS с сервером Apache

0

У меня есть приложение angularJS, использующее ui-router, здесь мое содержимое файла конфигурации:

app
.config(['$stateProvider', '$urlRouterProvider', '$locationProvider', function($stateProvider, $urlRouterProvider, $locationProvider) {


if(window.history && window.history.pushState) {

    $locationProvider.html5Mode({
        enabled: true,
        requireBase: false
    });
}

$urlRouterProvider
.when('/', 'login')
.otherwise('/error404');

$stateProvider
.state({
    name: 'main',
    abstract: true,
    templateUrl: '/templates/navbar.html',
    controller : 'NavBarController',
})
.state({
    name: 'main.login',
    url: '/login',
    templateUrl: '/templates/login.html',
    controller : 'LoginController as login',
    data: {
        authenticate: false,
        admin: false,
        navBar: false, 
    }
}); 

}]);

Также у меня есть файл.htaccess, содержащий:

RewriteEngine On  
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^ - [L]
RewriteRule ^ /index.html

Структура моей папки следующая:

- www
 - mP
  - mPc
   -.htaccess
   -/js (containing all angularJS files)
   -/templates (containing all the template files)
   - index.html

И мой файл index.html имеет следующий контент:

<!DOCTYPE html>
<html ng-app='App'>
<head>

<title>App</title>

<link rel="stylesheet" href="/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">

<script src="/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>  
<script src="/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
<script type="text/javascript" src="/angular.min.js"></script>

<script type="text/javascript" src="/angular-ui-router.min.js"></script>

<script type="text/javascript" src="/app.js"></script>
<script type="text/javascript" src="/constants.js"></script>
<script type="text/javascript" src="/directives.js"></script>
<script type="text/javascript" src="/filters.js"></script>
<script type="text/javascript" src="/services.js"></script>
<script type="text/javascript" src="/controllers.js"></script>
<script type="text/javascript" src="/config.js"></script>
<script type="text/javascript" src="/run.js"></script>

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
</head>

<body ng-controller='MainController'>
<div class="container">
    <div class="row">
        <div class="center">

            <section ui-view></section>

        </div>
    </div>
</div>

Когда я пытаюсь получить доступ к сайту с помощью localhost/mP/mPc/, он переходит на localhost/error404, и когда я использую localhost/mP/mPc/login, появляется сообщение об ошибке "Не найдено. Запрошенный URL/index.html не найден этот сервер "

Любая помощь будет высоко оценен!

Теги:
.htaccess

1 ответ

0

Для входа

$urlRouterProvider
.when('/', '/login')

Поскольку вы используете шаблоны из одной папки, вы можете использовать относительный путь

templateUrl: 'templates/navbar.html',
  • 0
    это не проблема
  • 0
    Я проверил, и файл .htaccess фактически работает, и все URL-адреса перенаправлены в index.html, но кажется, что UI-Router определяет URL-адрес по-разному, потому что все идет к действию в противном случае. Я попытался поместить тег <base в индексный файл, но не работает. Любая помощь??? Пожалуйста!!!
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню