簡體   English   中英

帶有Angular和ASP.NET MVC的SEO(非SPA)

[英]SEO With Angular and ASP.NET MVC (not SPA)

我有一個使用ASP.NET MVC和AngularJS的混合體系結構。

我使用ASP.NET MVC進行路由,所以我沒有一個頁面應用程序。

我在ASP View中使用init()方法將C#ViewModel注入角度控制器:

@model AddictLive.Core.ViewModel.Mobile.ViewModels.MovieViewModel
@using Newtonsoft.Json

<div ng-controller="MovieController" ng-init="init(@Html.Raw(JsonConvert.SerializeObject(Model)))">
     ...
</div> 

要在Angular控制器中獲取ViewModel,請使用:

$scope.init = function (movieViewModel) {
    $scope.property1= movieViewModel.property1;
    $scope.property2= movieViewModel.property2;
};

在這種情況下,我遇到了一個SEO問題,因為即使我的ViewModel是加載服務器端,頁面內容也是由Angular動態加載的。

當Google機器人掃描我的頁面時,所有變量始終都在此處({{variable}}或ng-repeat =“電影中的電影”)。

我在網上找到的所有解決方案都基於#號標簽! 單頁應用程序,但我的網站不是單頁應用程序。

我使用以下方法找到了{{variable}}的解決方案:

<span ng-bind="variable">@Model.myVariable</span>

但是我對ng-repeat和ng-include有問題,因為我不能使用razor @Model。

我已經讀到,隱藏div下的所有內容對於Google seo都不是一種好習慣,因此也不是一種選擇。

有人知道我的問題的解決方案嗎?

謝謝

我沒有為您提供直接解決方案,但有建議。 我了解到,幾乎不可能創建對用戶和搜索引擎有利的網站。 諸如ajax和按需加載之類的主題面向用戶,不利於搜索引擎,反之亦然。 例如,如此多的頁面僅具有用於搜索引擎的文本,這對於用戶而言非常無聊。

我建議使用漂亮的網址制作單獨的目標網頁。 在登錄頁面的頂部,您可以執行一些操作來提高轉化率,例如,播放搜索按鈕或執行其他操作,然后在下方放置搜索引擎的內容。 然后通過以下方法使您的用戶頁面對Google不可見:

<meta name="robots" content="nofollow,noindex" />

創建兩個不同的頁面:一個用於您的用戶,一個用於搜索引擎。 這樣可以保證您不必做任何妥協。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM