角度路由仅适用于一种情况

时间:2016-02-25 15:12:46

标签: angularjs asp.net-mvc routing

所以我试图为我的项目使用角度路由,但似乎只有一条路由正常工作。如果我使用' localhost /#/ {{routeName}}'我可以访问任何路由。但是当我使用格式' localhost / {{routeName}}'时,除home之外的所有内容都会返回404错误。这是我的配置

angular.module('shasta-water', ['search', 'ngRoute']).config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
      $locationProvider.html5Mode(true);

      $routeProvider
        .when('/', {
          redirectTo: '/home'
        })
        .when('/home', {
          templateUrl: 'Templates/HomeTemplate.html'
        })
        .when('/search', {
          templateUrl: 'Templates/SearchTemplate.html',
          controller: 'searchCtrl'
        })
        .when('/add', {
          templateUrl: 'Templates/AddTemplate.html'
        })
        .otherwise({
          // templateUrl: 'Templates/ErrorTemplate.html'
          redirectTo: '/home'
        });

    }]);

1 个答案:

答案 0 :(得分:1)

您需要确保服务器也知道当您使用HTML5模式(不使用#)时,它会收到这些网址的请求,您可以通过以下方式执行此操作:

的Apache / PHP

在根文件夹中的.htaccess文件内。处理index.php中的路由

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

RewriteRule ^(.*) /index.php [NC,L]

来自:https://stackoverflow.com/a/22740184/5171528

ASP.NET

 <!-- from https://stackoverflow.com/questions/25916851/wrapping-staticfilemiddleware-to-redirect-404-errors -->

<configuration>
<system.webServer>
  <modules runAllManagedModulesForAllRequests="true" />
  <rewrite>
    <rules>
      <!--Redirect selected traffic to index -->
      <rule name="Index Rule" stopProcessing="true">
        <match url=".*" />
        <conditions logicalGrouping="MatchAll">
          <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
          <add input="{REQUEST_URI}" matchType="Pattern" pattern="^/api/" negate="true" />
        </conditions>
        <action type="Rewrite" url="/index.html" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>
</configuration>