Servicestack angular 2模板只有一個入口點 - inxed.html。 比方說,我們希望在服務器上呈現seo元標記,以便像/ product/id之類的路線進行SEO優化。任何想法如何使它?在服務器上使用servicestack angular 2模板呈現seo元標記
1
A
回答
2
ServiceStack的Single Page App templates顧名思義只能從單個服務器運行index.html頁面。這意味着所有的路由都是在Angular JS的客戶端(即瀏覽器)上執行的。
這意味着當客戶導航到網站上的不同頁面時,例如,到/products/1
該請求由Angular客戶端路由處理以加載配置的組件,即請求永遠不會到達服務器。
但是,當初始請求發送到/products/1
時,該請求被髮送到服務器,但爲了使Angular能夠處理客戶端上的路由,ServiceStack返回主頁,它爲任何使用在模板的MyServices class配置FallbackRoute,不匹配的請求如
[Exclude(Feature.Metadata)]
[FallbackRoute("/{PathInfo*}")]
public class FallbackForClientRoutes
{
public string PathInfo { get; set; }
}
public class MyServices : Service
{
//Return index.html for unmatched requests so routing is handled on client
public object Any(FallbackForClientRoutes request) =>
new HttpResult(VirtualFileSources.GetFile("index.html"));
}
爲了能夠返回修改index.html
頁面,您可以只創建一個要處理的請求匹配的路由,例如:
[Exclude(Feature.Metadata)] //Hide Route from metadata pages
[Route("/product/{Id}")]
public class ViewProduct
{
public int Id { get; set; }
}
,並在頁面中返回一個修改後index.html
頁面替換佔位你想要的元數據,例如:
[AddHeader(ContentType = MimeTypes.Html)]
public object Any(ViewProduct request)
{
var indexFile = VirtualFileSources.GetFile("index.html");
var html = indexFile.ReadAllText();
return html.Replace("meta name=\"description\"",
$"meta name=\"description\" content=\"Product #{request.Id}\"");
}
告訴的WebPack包括您的自定義佔位符時,它產生的index.html
需要修改在index.template.ejs模板,如:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="description">
...
相關問題
- 1. 在服務器上呈現jQuery模板
- 2. Angular 2不會在模板中呈現自定義標籤html
- 3. Django模板在開發服務器上無法正確呈現
- 4. 如何使用angular和django呈現模板內部的模板
- 5. Angular 2功能模塊延遲加載但不呈現模板
- 6. 如何在Angular 2中呈現動態模板時提供@Input
- 7. jsrender呈現在node.js的諧音服務器端模板
- 8. 使用websockets呈現模板
- 9. Angular 2 - 組件無法正確呈現表標記
- 10. CakePHP 2:呈現爲XML無法在Web服務器上工作
- 11. 在React組件中使用鏈接在服務器上呈現
- 12. Angular 2與CLI - 來自不同服務器的組件模板
- 13. Angular 2 table呈現緩慢
- 14. 在服務器上使用angular 2部署的彈簧mvc
- 15. Angular 2:ngOnInit被稱爲嘗試呈現模板時,從url開始使用id
- 16. 爲什麼Angular 2通用服務器呈現角動態屬性?
- 17. Angular 2中的列表項呈現器
- 18. 服務器和客戶端呈現的不同標記
- 19. Swig模板在呈現內容之前顯示輸出標記
- 20. 角度4在元標記呈現
- 21. 表單標記在Chrome中呈現javascript模板時丟失
- 22. angular 2 xampp服務器
- 23. 如何在組件中的承諾解決後讓Angular 2呈現HTML模板?
- 24. 使用Angular 2路由器服務更改頁面標題
- 25. 記錄ServiceStack Web服務
- 26. 在Angular 2中使用SOAP服務
- 27. 使用模板實現的模板替換元標記的問題
- 28. Angular 2模板有模板嗎?
- 29. 在組件Angular 2中使用模板標籤?
- 30. 如何在Angular 2模板中使用Django模板?
爲優化搜索引擎優化,使用角萬能 –
角普遍有一大堆問題,現在和頁面響應時間較慢。 – Roman