2017-03-21 3 views
3

スーパーミラーレスのレスポンスhereに基づいて、私はHashbangsとhtml5Mode(真)を除いたAngular 1アプリを設定し、JavaScriptを使ってGoogleを実行しています。ページはGoogleによってインデックス登録されていますが、ダイナミックタイトルと説明タグはリンクされていません。Angular PrecompositionでGoogleにページタイトルを表示するにはどうすればよいですか?

私のindex.htmlヘッドは以下の通りです:

<head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 

    <base href="/"> 

    <meta name="author" content="me"> 
    <meta name="robots" content="index,follow"> 

    <title ng-bind="meta.title">Temp Title</title> 
    <meta name="description" content="{{meta.description}}"> 

    <!-- Scripts & CSS --> 
</head> 

タイトルと説明が正しくロードされているが、それらはGoogleで表示されません。

どうすればいいですか?

また、この方法はFacebookや他のソーシャルネットワークでも使用できますか?ありがとうございました。

+0

クローラ用のページを事前にレンダリングする方が効果的ですが、簡単な方法があるかどうかを知りたいと思います。 – neptune

+0

@neptuneはい私は、そのアプローチを避け、SEOフレンドリーなSPAで終わる可能性があるかどうかを評価しようとしています。 – belyid

答えて

0

実際superluminary応答hereは解を有します。 HTMLページの先頭は、サーバーによって完全に解決された状態で送信されなければなりません。

このソリューションが機能するためには、私はサーバー側で角度経路を複製し、解決された情報を送信しなければなりませんでした。

代わりのプレーンなHTMLビューを使用して、私は.ejsに変更しても、このような何かにヘッダを変更:ウェブサイトではなく、角の最初にサーバによって解決直撃を(取得するときに今

<head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 

    <base href="/"> 

    <meta name="robots" content="index,follow"> 

    <script type="text/javascript"> 
     window.title = <%- JSON.stringify(precomposition) %>.title; 
    </script> 

    <title ng-bind="title"><%= precomposition.title %></title> 
    <meta name="description" content="<%= precomposition.description %>"> 
    <!-- More meta information --> 
    <!-- Scripts & CSS --> 
</head> 

、常にクローラ用ケース)私は、リクエストサーバ側の処理:

//Express route 
app.route('/').get(precomposition.render); 

//precomposition 
exports.render = function (req, res) { 
    const precomposition = {title: 'tile', description: 'description'}; 
    res.locals.precomposition = precomposition; 
    res.render('index.ejs'); 
}; 

それが直撃ない場合は角度がタイトルアップデートを処理します(他の情報がユーザーに表示されていないため)。

もちろん、いくつかの欠点がありますが、Googleでは2015年10月以降、このアプローチを "_escaped_fragment_ URLs"ではなく推奨しています。また、私はそれが、ホストされているプリレンダリングの選択肢と、有料のものよりも安価なものよりも、リソースの消費量がはるかに少ないと思います。

0

なぜあなたはそのようなものを使用しないのですか?

https://github.com/steeve/angular-seo

+0

私は、そのアプローチを回避し、SEOに優しいSPAで終わる可能性があるかどうかを評価しようとしています。 – belyid

関連する問題