2013-10-16 33 views
5

我現在將我的基於Angularjs的web應用程序中的phantom集成在一起。在配置階段添加哈希前綴(如果缺失)

This好文章說我應該調用$locationProvider.hashPrefix()方法將前綴設置爲'!'來自SEO的原因(允許抓取工具攔截URL的_escaped_fragment組件)。

問題是,我沒有通過更早的,我的一些URL看起來如下: #/home

我雖然也許有一種方法,我可以植入這個'!' char在應用程序的配置函數中以編程方式(如果它不在那裏)請求URL,而不必手動編輯大量標記。

+0

您需要手動編輯什麼「標記」?你的地方有很多硬編碼的網址嗎? – tennisgent

+0

有一些,是的 –

+0

我有類似的問題。目前我使用錯誤的前綴時會看到這個錯誤。 '錯誤:無效的網址「一些網址」缺少哈希前綴「#!」。'對於鏈接到舊的url方案的用戶來說,能夠處理錯誤或路由器使用其他功能會很棒。 – freakTheMighty

回答

4

我有類似的問題,並手動(搜索/替換)通過所有鏈接並修復它們。

的其他問題,我是在外部網站使用舊的格式即 http://plinkplink.net/#/event/3 而不是新的格式 http://plinkplink.net/#!/event/3

的修復我爲未嚴格來說angularjs地道,但它的工作。我已將此腳本添加到我的頁面的標題中。它只是簡單地將頁面#用頁面重定向到頁面#:

<script> 
     var loc = window.location.href 
     if (loc.indexOf("#") != -1 && loc.indexOf("#!") == -1){ 
      window.location.href = loc.replace("#", "#!"); 
     } 
    </script> 

我希望它有幫助。

+0

這是一個可能的解決方案,謝謝你的回答。 P.S,你可能想要將ngCloak指令應用到你網頁的標題,這樣瀏覽器會更準確地爲它編制索引,而且觀衆不會在那裏看到page.title()。 –

0

您是否已鏈接到#值?即 - <a href="#/my/page">如果是這樣,你不應該。你應該鏈接到沒有#前綴的網址,我相信它會解決你的問題。