14

最近我已經注意到,在AngularJS應用中使用ngRoute模塊時,該路由在URL中包含#!,該URL早於#角度路線包含#!在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

+0

使用散列違背使點html5Mode ...那麼,爲什麼您使用的哈希值呢?至於有關 – charlietfl

+2

路由某處的hashprefix讀文檔(可能位於app.js中),您需要設置前綴「$ locationProvider.hashPrefix('!');」。去掉 」!」 –

+0

我不會在任何地方設置任何東西。我啓用了'html5Mode'來擺脫URL中'/'(斜線)的編碼。 –

回答

4

這就是所謂的散列爆炸。

一段時間Twitter使用相同的東西。它允許AJAX調用,並讓搜索引擎知道你的路徑而不使用「真實」路徑。它被認爲已經過時了。

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

有一個關於另一個計算器回答:url中的

Doing links like Twitter, Hash-Bang #! URL's

+0

爲什麼我突然面對這些問題?我一直在研究小角度應用程序一年,從未遇到這些問題。對我來說'#'工作得很好。舊的應用程序仍然正常工作,這是我創建的每個新應用程序的問題。 –

+0

'www.website.com/login'可能是你想讓它更適合搜索引擎的東西。但我不太確定爲什麼它會突然加上砰的一聲(!)。你最近更新過版本嗎?也許嘗試一個從頭開始的小樣本,以確保它默認做到這一點? –

+1

是的,先生,也試過。看起來像模塊的更新。 –