Как да има едностранично приложение без # в URL адреса, използвайки Angularjs?

Опитвам се да създам едностранично приложение с angular js. Но не искам # в URL адреса, когато шаблонът е включен. Използвал съм

 $locationProvider.html5Mode(true) 

app.config(['$routeProvider', '$locationProvider',
  function ($routeProvider, $locationProvider) {
        $routeProvider.
      when('/dashboardnew', {
                templateUrl: './dashboard_tmp',
                controller: 'CategoryCtrl'
            }).
      otherwise({
                redirectTo: '/dashboardnew'
            });
        // use the HTML5 History API
        $locationProvider.html5Mode(true);
    }]);

но това не работи при презареждане на страницата. Как трябва да реша този проблем? Благодаря


person user3373581    schedule 24.12.2014    source източник
comment
Моля, поставете някакъв код.   -  person sagar43    schedule 24.12.2014
comment
Добавих кода.   -  person user3373581    schedule 24.12.2014


Отговори (3)


Не можете, това е компромисът. Режимът html5 работи само ако е зареден angular, поради което няма да работи, ако страницата се презареди или ако пътеките са маркирани. Придържайте се към #, хората започват да свикват да ги виждат

person Born2Code    schedule 24.12.2014

разбира се, можете да използвате режим html5 в angular и да пренапишете всяка (не-api) заявка към вашата начална страница на angular от страната на сървъра. angular ще вземе url и ще отиде до местоположението на url

person bahadir    schedule 24.12.2014

Трябва да редактирате вашия .htaccess файл

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.php [L]

RewriteRule: index.php или index.html

person ArtemKh    schedule 24.12.2014