首先让我告诉你我想做什么。
我想索引我用 Angular JS 制作的网站,为此我已经阅读了所有来自谷歌的文档或文章。
我发现的是:
我需要使用 html5Mode 将我的 Angular js url 转换为友好的 url或 hashbag模式。
喜欢:http://www.example.com/#/about至 http://www.example.com/#!/about或者只是 http://www.example.com/about
使用 <meta name="fragment" content="!">
因此,当任何爬虫进入我的网站时,请说 Googlebot会来的,它会将我的网址视为 http://www.example.com/?_escaped_fragment_=/about所以现在我需要将此请求提供给静态 html 页面....对吧??
现在我的问题是我怎样才能用php框架生成这个html静态页面,这个html应该只有在它的内容完全加载后才会自动创建意味着如果angular js正在用$http请求加载数据那么这个html只会在所有数据加载到 html 模板后生成。
只有当它可以自动生成时,我才能将此 html 提供给爬虫。
我已经通过手动创建一些 html 页面在本地进行了测试,并检查请求是否会随 _escaped_fragment_ 一起提供。参数,然后它将服务器该特定的静态 html 页面。
但我无法找到方法,我将使用 php 框架为特定 Angular js 请求创建 html 页面。
我不想使用任何 npm服务。我想在 php 中完全创建它和/或任何jQuery Plugin .
最佳答案
除了需要将转义片段请求重定向到的服务器之外,服务器在呈现各种 View 后拍摄 HTML 快照,然后可以将其提供给 Googlebot 等,别忘了您还需要现有 Web 服务器(例如 Apache 或 IIS)中的设置,用于重定向到处理转义片段的新服务器。
感谢您正在寻找 PHP 解决方案,并且不想使用像 prerender 或 seoserver 包这样的 NPM 解决方案,但我想按照您的方式提供另一种更简单的解决方案:使用现有的托管解决方案,例如作为https://www.seo4ajax.com/或 https://prerender.io/反而。他们将为您托管一个可以抓取您网站的 SEO 服务器,通常这是免费的,除非您拥有一个包含数百个页面的庞大数据驱动网站。为您减轻负载,无需再运行另一台服务器,并且您会得到一些不错的管理面板来查看哪些爬虫命中了 SEO 重定向等。
从广义上讲,您将需要您提到的 HTML 中的元标记,以及 AngularJS 配置中的这些设置:
$locationProvider.html5Mode(true);
$locationProvider.hashPrefix('!');
如果您现有的服务器是 Apache,然后是一些自定义重定向设置,例如在 .htaccess 文件中,这些站点将为您提供这些设置,您可以复制和粘贴。
关于javascript - 为用于搜索引擎抓取的 AngularJS 应用程序创建 HTML 快照,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40670068/
出于纯粹的兴趣,我很好奇如何按顺序创建PI,而不是在过程结果之后生成数字,而是让数字在过程本身生成时显示。如果是这种情况,那么数字可以自行产生,我可以对以前看到的数字实现垃圾收集,从而创建一个无限系列。结果只是在Pi系列之后每秒生成一个数字。这是我通过互联网筛选的结果:这是流行的计算机友好算法,类机器算法:defarccot(x,unity)xpow=unity/xn=1sign=1sum=0loopdoterm=xpow/nbreakifterm==0sum+=sign*(xpow/n)xpow/=x*xn+=2sign=-signendsumenddefcalc_pi(digits
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h
大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在
我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此
我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r
刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr