2016-01-22 60 views
6

我有一個Angular應用程序,我試圖在生產環境中設置。正如我讀到的,Google現在可以通過AJAX頁面進行抓取。我正在檢查如何使用Google抓取服務工作。雖然主頁在所有主流瀏覽器中均正確呈現,但Google抓取方式會返回空白頁面,並且沒有編譯Angular的指令並且沒有錯誤。我使用HTML5模式和ui-router。文件由node.js應用程序服務器提供(我嘗試從nginx提供文件並且結果相同),並且所有文件都允許使用robots.txt。腳本被連接並縮小。控制檯中沒有錯誤。谷歌不提供Angular.js應用程序

返回代碼被取爲谷歌服務: DOCTYPE HTML>

<head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <base href="/"> 
    <title ng-bind="$state2.current.data.pageTitle || 'xxx'"></title> 
    <meta name="description" content="{{$state2.current.data.description}}"> 
    <meta name="keywords" content="{{$state2.current.data.keywords}}"> 
    <meta name="viewport" content="width=device-width"> 
    <!-- Place favicon.ico and apple-touch-icon.png in the root directory --> 
    <link rel="stylesheet" href="app/b91daaea.vendor.css"> 
    <link rel="stylesheet" href="bower_components/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css" /> 
    <link rel="stylesheet" href="app/dbc6e533.app.css"> 
</head> 

<body iact-set-body="{{$state2.current.name}}" ng-cloak ng-controller="IndexCtrl as Index" ng-class="{'register-page' : $state2.current.name === 'register.one'}"> 
    <iact-progress-bar ng-if="$state2.current.name === 'main.post'" class="progress-bar progress-bar--page"></iact-progress-bar> 
    <div class="alert-block" alert-box></div> 


    <loader ng-show="showLoader"></loader> 
    <div class="ui-view-container"> 
    <div ng-cloak ui-view></div> 
    <div ng-cloak ui-view="layer" class="ui-view-layer"></div> 
    </div> 


    <!--[if lt IE 7]> 
    <p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade 
     your browser</a> to improve your experience.</p> 
    <![endif]--> 
    <!--[if lt IE 9]> 
    <script src="bower_components/es5-shim/es5-shim.js"></script> 
    <script src="bower_components/json3/lib/json3.min.js"></script> 
    <![endif]--> 
    <script src="https://cdn.socket.io/socket.io-1.3.7.js"></script> 
    <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB5s1GO-SwKumRL-es-SHnGYwom55LpJyM&libraries=places"></script> 
    <script src="app/9b5d1095.vendor.js"></script> 
    <script src="app/b49bc91c.app.js"></script> 
</body> 

</html> 

有一些是做錯了或者我應該只是預渲染的爬蟲走?

+0

我有同樣的問題,奇怪的是,當我獲取和呈現谷歌確實顯示我的網頁「谷歌看到它」,這是混亂,因爲它只是提取(和存儲在緩存btw .. )沒有模板加載。 – FireBrand

+0

[抓取Google網站管理員工具]可能的重複(http://stackoverflow.com/questions/29662999/fetch-as-google-webmaster-tools) –

回答

-2

做研究最近,我發現在互聯網上鋪天蓋地的看法是,如果你有一個AngularJS應用程序,你希望它抓取和被谷歌收錄,你需要像prerenderbrombone,生成HTML快照,靜態您的網站的頁面,以便搜索引擎可以索引它。

如果你對SEO優化業務超級認真,我認爲你應該非常小心的使用這個工具。首先,他們表示正在使用Google定義Ajax爬行的規範。但是這個規範已被棄用。

預渲染可能導致隱形。當網站向用戶顯示與搜索引擎不同的內容時,隱形正在發生。至少,如果你是僞裝的,谷歌會很快處罰。請測試,測試,測試每個和任何您的網站的隱形,特別是當它服務兩個不同版本!

Google說: 在評估您的網站以查看它是否包含隱藏文字或鏈接時,請查找您網站訪問者不容易查看的任何內容。

您不需要向Google提供不同的或預先呈現的內容。事實上,只要您在應用內遵循常規SEO慣例,Google就可以抓取,呈現和索引您的AngularJS應用。索引也需要一些時間。

聲明:這是一個理論概念。測試表明,只要設置正確,Google就可以抓取,渲染和索引純-AngularJS網站。但是,其他搜索引擎和抓取工具不可能正確抓取您的內容。在純JS環境中,您不會被Bing,Yahoo或Yandex索引;而社交網絡如Facebook,Twitter,Pinterest和其他許多人都不會對你的網頁有什麼線索有任何線索。在2016年,如果您關心來自外部來源的流量,則不應在生產站點上實施純JS架構。

相關問題