web-dev-qa-db-ja.com

Angularルートは#ではなく#!をURLに含む

最近、AngularJSアプリでngRouteモジュールを使用すると、URLに#!が含まれていたことに気付きました。以前は#でした。

たとえば、www.webiste.com/#/loginwww.website.com/#!/loginになります

html5Modeを有効にし、コードを使用してベース全体を削除するrequireBaseも無効にする必要があります。

$locationProvider.html5Mode({
       enabled: true,
       requireBase: false
});

uRLはwww.website.com/loginに変わりますが、これは正常に機能しますが、誤解を招きやすく、Angular SPA URLのようには見えません。

html5Modeを有効にしない場合、URLはエンコードされ、回避できません。したがって、www.website.com/#/loginwww.website.com/#!/#%2Floginになります(後の/%2Fとしてエンコードされます)。

これは特定の目的のために開発者によって実装された変更ですか?どんな違いがあるの?アプリを機能させるには、アプリにどのような変更を加える必要がありますか?私は何か間違っていますか?

Githubの問題: https://github.com/angular/angular.js/issues/15547

15
Samarth Agarwal

ハッシュバンと呼ばれます。

しばらくの間、Twitterは同じものを使用していました。 AJAX呼び出しを許可し、「実際の」パスを使用せずに検索エンジンにパスを通知します。ただし、古いと見なされます。

https://developers.google.com/webmasters/ajax-crawling/docs/getting-started

それについて別のstackoverflowの答えがあります:

Twitter、Hash-Bang#!URLのようなリンクを作成する

3
Alexis Wilke