所以我试图为我的项目使用角度路由,但似乎只有一条路由正常工作。如果我使用' 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'
});
}]);
答案 0 :(得分:1)
您需要确保服务器也知道当您使用HTML5模式(不使用#
)时,它会收到这些网址的请求,您可以通过以下方式执行此操作:
在根文件夹中的.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
<!-- 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>