1

アプリケーション用のルートがいくつかあります。

$routeProvider.
            when('/user', {templateUrl: 'user/partials/userlist.html',   controller: 'userListController'}).
            when('/user/:userName', {templateUrl: 'user/partials/userdetail.html', controller: 'userDetailController'}).
            when('/group',{templateUrl: 'group/partials/grouplist.html', controller: 'groupListController'}).
            when('/group/:groupName', {templateUrl: 'group/partials/groupdetail.html', controller: 'groupDetailController'}).
            when('/category',{templateUrl: 'category/partials/categorylist.html', controller: 'categoryListController'}).
            otherwise({redirectTo: '/user'});

アプリケーションのルートは /admin/ で、.htaccess をデフォルトで index.html に設定しているため、サイトは次のようになります: www.domain.com/admin/#/user/username...etc... 非 HTML5 バージョン。

そんな時はすべてうまくいく。HTML 5 をオンにすると、すぐに www.domain.com/user/ にリダイレクトされますが、もちろん機能しません。モジュールのルートが /admin/ であることをルーティング プロバイダーに伝えるにはどうすればよいですか?

編集:

追加<base href="/admin/"></base>しました: index.html ヘッド タグの最後の行に、www.domain.com/admin に移動すると、www.domain.com/admin/user に正しくリダイレ​​クトされ、userlist テンプレートとコントローラーが使用されます。ただし、www.domain.com/admin/user に直接移動すると、ページが見つからないというエラーが表示されます。この部分がデフォルトの書き換えルールと関係があるのではないかと考え始めています。

RewriteRule ^$ index.html

編集:

うん。理解した。書き換えを完全に取り出し、デフォルトのリダイレクトからユーザーへのリダイレクトから機能し、ユーザー詳細に移動すると機能しましたが、/ userまたは他のルートを入力しても機能しません...html5でのみ機能するようですアプリケーション自体からナビゲーションを行います。別のビューに直接移動することはできません。たとえば、グループに直接移動しようとしても機能しません。

したがって、インデックスに書き換える書き換えルールはなく、ユーザーのデフォルト ルートは機能しますが、グループとカテゴリは機能しません。

編集:

これが私が見つけたものです。デフォルトの index.html、$location.html5mode(true) セットを書き換えなくても、www.domain.com/#/user/ または www.domain.com と入力したページに移動する限り機能します。 /#/グループ。すぐに URL を www.domain.com/user または www.domain.com/group に書き換えます。ただし、www.domain.com/user に直接移動しようとしても機能しません。ルートの処理を行うのはフロント エンドであるため、ここでは明らかに書き換えルールは役に立ちません。

これは角度ルーティングの標準的な動作ですか?

ソリューションに追加するために編集:

サブディレクトリにリダイレクトする追加のルートがある場合は、[END] タグを使用するか、ディレクトリの mod-rewrite がオフになっていることを確認してください。そうしないと、書き換え後に一般的なルールが再び処理され、すべてが索引。

4

1 に答える 1

1

私が見る限り、問題は、人々がルート URL にアクセスしたときに AngularJS HTML と JS のみを提供していることです。サーバーは、ハッシュのみを認識しませんwww.domain.com/。ただし、Angular にすべてを実行させたいように思われるため、このようなワイルドカード ルートを検討する必要があります。

RewriteRule ^.*$ index.html

これにより、AngularJS とルーティングをロードするブラウザーにwww.domain.com/戻った後、どのコーンであっても、AngularJS が残りを実行できるようになります。index.html

ここで起こっていることを誤解していない限り、これがあなたの問題であると確信しています。

于 2013-11-02T18:14:56.980 に答える