Articles of seo

怎么样与NodeJS的SEO(wo Angular)

我有一个网站(多页),给出一些一般信息,但也产生来自数据库的信息(产品说明….) 网站架构是用nodejs,express,bootstrap和jade(mysql)完成的, search引擎优化有什么问题吗? 我看过很多关于使用nodeJS + angularJS的文章,但是如果不是的话! 我应该在我的玉模板中添加基本的SEO信息(描述和关键字)吗? 还是有更聪明的东西? 谢谢你的帮助

拒绝参与Google AdSense的请求(阶段1)

我正在尝试为Google AdSense服务注册我的networking应用程序。 经过五次尝试仍然陷入第一阶段的错误: 内容不足 。 我的networking应用程序是YouTube的search引擎,由AngularJ和NodeJs AngularJS完全支持asynchronous模式,这就是Google's crawlers问题。 所以我实现了库prerender.io ,我已经设置了meta标签来解决Angular的问题。 <meta name = "fragment" content = ""> 我还在网站中准备了sitemap.xml ,并通过google的门户网站站长索引页面。 该网站是一个search引擎, does not have static content和范围,所以我也在页面原则中添加了一些文本和描述,其中包含了其他的部分文件。 尽pipe有这些变化,我还是不能通过第一阶段,我该怎么办? 我没有做一个Web应用程序Angular所有必要的步骤?

SPA中的同构消耗REST服务

目前,我正在进行一个新项目的规划阶段,这个项目由一个店面,一个高度活跃的用户仪表板以及通过店面提供的高度互动的迷你应用程序来提供。 我们试图摆脱使整个平台成为SPA的束缚,用React为前端视图deviseFlux架构上的全部function。 像大多数SPA一样,一个问题就是SEO。 我已经基于este.js dev堆栈原型化了一个同构解决scheme。 一个问题是,我们的应用程序几乎从一个REST风格的服务器(它与服务于SPA的Web服务器分开)中消耗所有数据。 这意味着Web服务器需要从RESTful服务器获取大量的数据,以同构地生成HTML快照。 我认为我自己的一个单独的抓取程序会定期抓取整个店面,同时生成当Web服务器遇到search引擎抓取程序时可以提供的页面的HTML快照。 我不确定这是否是一个好的方法,因为它可能会引入额外的维护,坦率地说,似乎有点脆弱。 我可以让Web服务器同时生成HTML,但是我担心服务器会从REST API中获取相当多的数据,因此担心普通用户的服务器不能正常工作。 有没有更好的办法来处理这种情况?

将HTML快照提供给Moz SEO机器人

我正在使用Phantom在我的网站上预渲染每天的dynamic页面。 然后,我编写了一些代码来检查请求的用户代理,并在请求来自bot时提供预渲染的HTML快照。 我的一些机器人是: var socialBots = [ "facebookexternalhit/1.0", "facebookexternalhit/1.1", "FacebookExternalHit", "twitterbot", "TwitterBot", "Twitterbot/1.0", "LinkedInBot", "rogerBot", "rogerBot/1.0" ]; 然后我的nodeJS代码(使用Express)来监听漫游器并提供快照: app.use(function(req, res, next){ var userAgent = req.get("user-agent"), socialBot = false; for (i=0; i<socialBots.length; i++) { if (userAgent.indexOf(socialBots[i]) > -1) { socialBot = true; break; } } if (socialBot) { //serve snapshot } }); 这对Facebook和Twitter工作正常,但数组rogerBot的最后一行应该为Moz SEO,似乎并没有工作。 Moz SEO没有得到我的快照,这是最后一次抓取。 […]

我应该使用node.js为我的单页面应用程序?

我已经构build了一个Backbone.js应用程序,完成所有的重大工作,如模板,翻译和数据加载,客户端。 (该应用程序基本上是教育资料的框架 – video和交互式可视化 – 至今还没有包含任何重要的实时function 。) 不过,我正在思考,如果我最好使用node.js的一些function…? SEO JSDOM或其​​他node.js库是否足够成熟,可以将呈现的模板提供给客户端? 桌面 在不久的将来,是否可以通过本地运行的node.js来分发.exe / .app文件? 我应该看哪个框架? 翻译/ i18n 使用node.js查找翻译并为翻译人员构build翻译仪表板是否是一个好主意? 数据库 我也应该使用node.js查询我的数据库(可能SQLite,因为我想在本地镜像)用户和其他数据或坚持与PHP / Ruby的后端? 总而言之,如果我坚持原来的客户端方法,我会失去什么? 我的JavaScript框架可以从早期的包含node.js的教育材料中获益吗?

制作React图库的策略对search引擎友好

我写了一个React图片库或幻灯片。 我需要使search引擎可以索引替代文本,但因为我的服务器是在PHP中,React.renderToString是有限的使用。 该服务器在PHP + MySQL中。 PHP使用Smarty(一个体面的PHP模板引擎)来呈现HTML。 其余的PHP框架是我自己的。 Smarty模板有这么一个单一的线: <script> var GalleryData = {$gallery}; </script> 这是由PHP的控制器function呈现如下: return array( 'gallery' => json_encode($gallery), ); ( $gallery是MySQL查询的结果表)。 而我的.js: React.render(<Gallery gallery={GalleryData} />, $('.gallery').get(0)); 不是最优雅的设置,但考虑到我的服务器是在PHP中,似乎没有更好的方法来做到这一点(?) 我做了一个超级快速入门,在第一枪时修复了这个问题 – 我从Firebug复制了呈现的HTML,并手动将其插入到数据库中的一个新表中。 然后,我只是从PHP中呈现这个代码块,我们很高兴浏览器。 有一个复杂的是,因为React组件只在第一次渲染时插入到DOM中(据我了解),而且由于该库一次只显示一个图像幻灯片,我不得不手动点击所有幻灯片一次保存HTML代码。 但是现在,替代文本可以由CMS编辑,所以我需要自动化这个过程,或者想出一个更好的解决scheme。 在Node.js中重写服务器是不可能的。 我的第一个猜测是我需要安装Node,并编写一个脚本来创build相同的React组件。 由于input数据(包括alt文本)必须来自MySQL,我有几个select: 从注释连接到MySQL数据库,并复制查询 在PHP端创build一个只返回JSON的响应URL(把SQL查询放入一个通用函数) 在Node中获取整个页面,但是提取GalleryData将会是一团糟 然后,我必须确保所有组件都被渲染到DOM中,所以我可以通过手动调用nextSlide()方法多次编写幻灯片(less一个)来编写脚本。 最后,我将把渲染的DOM再次保存到数据库(所以Node脚本毕竟需要一个MySQL连接 – 也许第一个选项是最好的)。 对于这样一个基本要求,整个过程似乎非常复杂。 我错过了什么吗? 我对Node完全陌生,在浏览器之外构buildDOM的概念对我来说基本上是新的。 我不介意将Node引入到我的架构中,但它只是支持在前端使用React。 请注意,该网站每月大约有15,000个综合浏览量,因此不需要考虑大规模的可扩展性 – 我不使用任何页面caching,因为这种stream量并不需要。 我可能有一些需要像这样静态渲染的React组件,但是维护一个小的技术开销(例如,在Node中维护一组并行的SQL查询)不会是一个大问题。 有谁可以在这里指导我吗?

在SPA(单页面应用程序)中使用node.js + express.js在服务器端dynamic生成内容的SEO

我的客户端代码是一个单独的页面应用程序(写在knockout.js)与自己的路由系统,所以当谷歌爬虫机器人将尝试访问链接(这与后端请求新的页面无关,但只是客户端的一部分它会要求服务器(node.js + express.js)服务页面(例如'mywebsite / about'),当然服务器将返回404,因为它不知道客户端路由系统。 这是我目前的服务器代码: router.get('*', function(req, res, next) { res.sendFile(path.resolve('../dist/index.html')); }); 我的想法是定义与客户端相同的路由结构,并在search参数中传递客户端路由系统的路由: router.get('/about', function(req, res, next) { res.sendFile(path.resolve('../dist/index.html?tab=about')); }); 然后在客户端,我可以在JavaScript中捕捉并select正确的路线。 在这里当然我有另一个问题 – 据我所知,谷歌机器人不运行JavaScript ..但在这里,我可以使用prerender.io中间件,我猜。 1)这是一个正确的方式去与单页面应用程序生成的内容和search引擎优化? 2)如何从express.js传递search参数?

有没有可能有一个SEO友好的Express.js网站?

如果Express提供传统的路由结构(即http://yoursite.com/foo ),那么这些页面是否会显示在Google的search引擎结果页面上,类似于使用相同path结构的Wordpress博客或PHP网站?

没有客户端JavaScript的Backbone.js

我正在研究使用Backbone.js和node.js来编写一个小型的Web应用程序。 在客户端和服务器之间共享代码是有吸引力的。 我无法弄清楚没有JS(和search引擎)的客户端应该如何与网站进行交互。 如何在没有客户端JavaScript的情况下进行validation和渲染? 当然,我想这样做没有代码重复。 对我来说,Backbone.js和其他服务器端js的意义在于,您可以在服务器和客户端上拥有相同的表单validation和模板/视图生成。

Prerender.io不caching页面

我用一个expressJS后端与AngularJS做了一个应用程序。 现在我想让它抓取,我发现prerender.io 。 我想我已经做了一切正确的bur由于某种原因,我没有看到prerenderer仪表板中的任何统计数据。 在我的app.configure函数中,我包含了如下的标记: app.use(require('prerender-node').set('prerenderToken', 'my-token')); 在我的HTML中,我已经包含了meta-fragment标签: <meta name="fragment" content="!"> 我做的最后一件事是告诉AngularJS使用hashprefix: $locationProvider.html5Mode(false); $locationProvider.hashPrefix('!'); 但由于某种原因,如果我参考文档,我不会得到正确的结果。 下面你可以看到它应该做什么: Google会像这样向您的服务器发送请求: http://www.example.com/?_escaped_fragment_=/user/123 你把这个url变成这个: http://www.example.com/#!/user/123 由于某种原因,如果我尝试这个,它仍然添加#! 标志添加URL的末尾,所以如果我请求我的应用程序的URL像谷歌我得到这个: http://www.my-website.com/?_escaped_fragment_=#!/home 所以它不会replaceurl中的散列。 我认为这是我的问题的原因。 提前致谢! 编辑 – 如果我例如添加一个额外的路线,那么它的作品: app.get('/', function (req, res) { res.sendfile('./public/index.html'); }); app.get('/test', function (req, res) { res.sendfile('./public/index.html'); }); '/'路线不起作用, '/test'路线不起作用。