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);
}]);

ブラウザで「://host/view1」というURLを入力して、ユーザーが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 ファイルに。

それは私が期待したように動作します!

ps。

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

上記の 2 行は、指定された名前のファイルがブラウザに存在しない場合、またはブラウザにディレクトリが存在しない場合は、以下の書き換えルールに進むことを意味します

于 2013-05-04T08:50:21.147 に答える