2016-08-17 6 views
0

Я пробовал все в других сообщениях относительно удаления идентификатора фрагмента (#). Все работает так, как должно, с идентификатором #, но это было бы хорошим улучшением для моего проекта.Angularjs - Как удалить # из url - Ошибка: не удалось выполнить 'pushState' в 'History':

  1. я настроил $ locationProvider и установить html5Mode истинного
  2. Установите <base href="app" /> в моем index.html судимого также <base href="/" />. Я использовал <base href="/" />
  3. Без установки базы requireBase: false.
  4. Обертывание $locationProvider.html5Mode(true) в if(window.history && window.history.pushState) проверить поддержку браузера для истории html5 API, как кто-то предложил
  5. я написал правила в web.config, как кто-то предложил.
  6. Я пробовал все, что мог найти после того, как я нашел его в Google.

Я получаю эту ошибку:

angular.js: 13708 Ошибка: Не удалось выполнить «PushState» на «История»: История состояния объекта с URL «http://sales/?_ijt=d1r1ladp5ro1tvflefsdpnfvd4» не может быть создан в документе с origin 'http://localhost:52471' и URL 'http://localhost:52471/BeerbayCRM/BeerbayCRM/app/index.html?_ijt=d1r1ladp5ro1tvflefsdpnfvd4'.

См. Список доступных переменных окружения Ваша помощь будет очень признательна! Спасибо.

Вот мой код:

app.config(['$routeProvider', '$locationProvider', '$httpProvider', 
 
    function($routeProvider, $locationProvider) { 
 

 
    $routeProvider 
 
     .when('/', { 
 
     templateUrl: "views/productsView.html" 
 
     }) 
 
     .when("/products", { 
 
     templateUrl: "views/productsView.html" 
 
     }) 
 
     .when("/sales", { 
 
     templateUrl: "views/salesView.html" 
 
     }) 
 
     .when("/charts", { 
 
     templateUrl: "views/chartsView.html" 
 
     }) 
 
     .otherwise({ 
 
     templateUrl: "views/productsView.html" 
 

 
     }); 
 

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

 
     $locationProvider.html5Mode({ 
 
     enabled: true 
 
     }); 
 
    } 
 
    } 
 
]) 
 

 
.controller("routeCtrl", function($scope, $location) { 
 
    $scope.setRoute = function(route) { 
 
    $location.path(route); 
 
    } 
 
});
<!DOCTYPE html> 
 
<html ng-app="myApp"> 
 

 
<head> 
 

 
    <!--.....all the dependencies are here.....--> 
 

 
    <base href="app" /> 
 

 
</head> 
 

 
<body ng-controller="myAppCtrl"> 
 
    <div class="navbar navbar-inverse"> 
 
    <a class="navbar-brand" href="#">Beerbay</a> 
 
    </div> 
 
    <div ng-controller="routeCtrl" class="col-sm-1"> 
 
    <a ng-click="setRoute('products')" class="btn btn-block btn-primary btn-lg">Products</a> 
 
    <a ng-click="setRoute('sales')" class="btn btn-block btn-primary btn-lg">Sales</a> 
 
    <a ng-click="setRoute('charts')" class="btn btn-block btn-primary btn-lg">Charts</a> 
 
    </div> 
 
    <ng-view/> 
 
</body> 
 

 
</html>

Обновление: частично работает после того как я начал приложения в сервере узла отдельной единицы WebStorm использует. После того, как я нажму обновленную страницу, я получаю только короткое сообщение на странице: «Невозможно GET /...__partial view name *»

+0

На данный момент я сохраню идентификатор фрагмента, потому что у меня нет времени, и кажется сложным установить сервер для перезаписи перенаправления, но я открыт для любого предложения или решения. Благодарю. –

ответ

1

Необходимо иметь на сервере переадресацию на сервер ... когда сервер получает запрос на example.com/yoursite/some-page по умолчанию, он просто попытается загрузить некоторые индексные файлы из этого местоположения, когда он не найдет их, это будет 404. Вам нужно настроить перенаправление на стороне сервера в конфигурации веб-сервера, чтобы любые пропущенные пути, которые начинаются с/yoursite/redirect на /yoursite/index.html, чтобы ваша угловая маршрутизация могла справиться с этим.

https://docs.angularjs.org/guide/$location#server-side

Смотрите также

Reloading the page gives wrong GET request with AngularJS HTML5 mode

Если у Вас теперь есть узел сервер, который обработка запросов вам нужно настроить сервер узла, чтобы иметь дело с редиректами, лично только сделали это с Apache и Nginx.

+0

Спасибо за объяснение. Я прочитаю ссылки. –