我已经做过了,$locationProvider.html5Mode(true);但是没有用。每当我访问http://example.com它时,它都会转到http://example.com/#!/。代码在这里给出:
$locationProvider.html5Mode(true);
http://example.com
http://example.com/#!/
var myApp = angular.module('myApp', ['ui.router', 'ui.bootstrap']); myApp.config(['$qProvider', function ($qProvider) { $qProvider.errorOnUnhandledRejections(false); }]); myApp.config(function($stateProvider, $urlRouterProvider,$locationProvider) { // For any unmatched url, redirect to EXTRANET home page $urlRouterProvider.otherwise('/'); // Now set up the states $stateProvider .state('listrole', { url: "/list-role", views: { 'main-content': { templateUrl: rootUrl+ 'views/main.html', controller: 'rolesCtrl' } } }) $locationProvider.hashPrefix(''); $locationProvider.html5Mode(true); });
*我也添加了 *更新$locationProvider.hashPrefix('');,但没有区别。另外,让我告诉您,我正在地址栏中输入地址,然后按Enter。我说的对吗?浏览器如何发现它不需要从服务器刷新?
$locationProvider.hashPrefix('');
更新#2
理想的情况是我想要的网址为http://example.com和http://example.com/#!/list- role到http://example.com/list-role。现在http://example.com/list-role给出404
http://example.com/#!/list- role
http://example.com/list-role
更新#3
我正在使用nginx代理,如果有帮助的话。
更新#4
擦除的缓存。现在我可以看到http://example.com,而不是http://example.com/#!,但仍http://example.com/list- role给404
http://example.com/#!
http://example.com/list- role
如果要删除此前缀,请将以下代码添加到配置中:
appModule.config(['$locationProvider', function($locationProvider) { $locationProvider.hashPrefix(''); }]);
在此处获取更多信息。
如果要删除整个前缀(#而不仅仅是!),则可以尝试以下解决方案:
#
!
1)激活HTML5模式并!在模块配置中删除前缀
$locationProvider.html5Mode(true); $locationProvider.hashPrefix('');
2)然后/在<head>index.html上将base设置为
/
<head>
<head> ... <base href="/"> </head>