Имам приложение с маршрутизация на php. Ето един прост пример:
$req=$_SERVER["REQUEST_URI"];
if(strpos($req, "/items/") === 0){
include __DIR__."/../views/items/index.php";
} else{
include __DIR__."/../views/login/index.php";
}
на всяка страница (елементи и данни за вход) angularjs routingсе използва. И всички работи перфектно с изключение на IE9 и по-долу. След натоварване на страницата, ъгловите актуализации URL и презарежда страницата за маршрутизация с хеш навигация. И аз получавам следния проблем в IE:
- въведете url = / items / 23
- връща страница
items/index.php
- AngularJS променя url на / #! / Items / 23
- Сървърът не може да чете данни след символа хеш и смята, че URL адресът е
/
така се връща страницаlogin/index.php
В резултат на това не мога да отворя елементи страница в IE. Как мога да разреша проблема? Използвах да пренасочвам събитието $routeChangeSuccess
в IE, за да добавите параметри на заявката, за да го прочете на сървърната страна, но новата версия на ъгловата маршрутизация постави параметрите на заявката след хеш и те не могат да бъдат прочетени на сървърната страна.
Доставчикът на ъгловото местоположение е $locationProvider.html5Mode(true).hashPrefix("!");
Отговори:
1 за отговор № 1Намерили ли сте решение?
Мисля да променя кода на angularjs за съхраняване на пътя в бисквитка, която след това може да бъде изтеглена от php, когато ъгловата опресняване на страницата, за да се промени URL адресът да бъде hashbang (ie8 в html5mode)
Проблемът е отворен тук https://github.com/angular/angular.js/issues/6195
Изтеглете заявката тук https://github.com/angular/angular.js/pull/6303