最近、AngularJSアプリでngRoute
モジュールを使用すると、URLに#!
が含まれていたことに気付きました。以前は#
でした。
たとえば、www.webiste.com/#/login
はwww.website.com/#!/login
になります
html5Mode
を有効にし、コードを使用してベース全体を削除するrequireBase
も無効にする必要があります。
$locationProvider.html5Mode({
enabled: true,
requireBase: false
});
uRLはwww.website.com/login
に変わりますが、これは正常に機能しますが、誤解を招きやすく、Angular SPA URLのようには見えません。
html5Mode
を有効にしない場合、URLはエンコードされ、回避できません。したがって、www.website.com/#/login
はwww.website.com/#!/#%2Flogin
になります(後の/
は%2F
としてエンコードされます)。
これは特定の目的のために開発者によって実装された変更ですか?どんな違いがあるの?アプリを機能させるには、アプリにどのような変更を加える必要がありますか?私は何か間違っていますか?
Githubの問題: https://github.com/angular/angular.js/issues/15547
ハッシュバンと呼ばれます。
しばらくの間、Twitterは同じものを使用していました。 AJAX呼び出しを許可し、「実際の」パスを使用せずに検索エンジンにパスを通知します。ただし、古いと見なされます。
https://developers.google.com/webmasters/ajax-crawling/docs/getting-started
それについて別のstackoverflowの答えがあります: