0

基本路由方法如下,

angular.module('myApp', ['myApp.filters', 'myApp.services', 'myApp.directives', 'myApp.controllers']).
 config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
  $routeProvider.when('/view1', {templateUrl: 'partials/partial1.html', controller: 'MyCtrl1'});
  $routeProvider.when('/view2', {templateUrl: 'partials/partial2.html', controller: 'MyCtrl2'});
  $routeProvider.otherwise({redirectTo: '/view1'});
  $locationProvider.html5Mode(true);
}]);

我想让用户可以通过在浏览器上输入 url "://host/view1" 来访问 view1。但这不起作用..

通过使用 $routeProvider 和 $locationProvider,如果用户单击“href=/view1”这个链接,则页面路由主机/view1。

但是如果用户直接访问 url "://host/view1" 它会发出 404 错误。为了让用户可以通过url直接访问/view1,我必须删除html5Mode,用户可以通过“://host/#/view1”访问

但是我怎样才能删除#符号!?不仅是 html5mode,方法用户可以通过键入该 url 直接访问页面。

4

1 回答 1

2

谢谢。耀西

我在 DocumentRoot 文件夹上创建 .htaccess 文件并在下面添加

RewriteEngine   On
RewriteBase     /
RewriteCond     %{REQUEST_URI} !^(/index\.php|/img|/js|/css|/robots\.txt|/favicon\.ico)
RewriteCond     %{REQUEST_FILENAME} !-f
RewriteCond     %{REQUEST_FILENAME} !-d
RewriteRule     .               /index.html              [L]

进入 .htaccess 文件。

按我的预期工作!

附言。

RewriteCond     %{REQUEST_FILENAME} !-f
RewriteCond     %{REQUEST_FILENAME} !-d

上面两行表示如果浏览器中指定名称的文件不存在,或者浏览器中的目录不存在则执行下面的重写规则

于 2013-05-04T08:50:21.147 回答