如何检查 prerender.io 在我的 angularjs 网站上是不是正常工作?
Posted
技术标签:
【中文标题】如何检查 prerender.io 在我的 angularjs 网站上是不是正常工作?【英文标题】:How to check if prerender.io is working correctly on my angularjs site?如何检查 prerender.io 在我的 angularjs 网站上是否正常工作? 【发布时间】:2014-10-14 12:52:03 【问题描述】:我遵循了这个教程: http://www.ng-newsletter.com/posts/serious-angular-seo.html
我正在使用修改过的 apache conf 从这里(原来没有工作,我改变了 HTTP_USER_AGENT 位) https://gist.github.com/thoop/8072354
现在我的 .htaccess 文件看起来像这样
# Change YOUR_TOKEN to your prerender token and uncomment that line if you want to cache urls and view crawl stats
# Change http://example.com (at the end of the last RewriteRule) to your website url
<IfModule mod_headers.c>
RequestHeader set X-Prerender-Token "MY TOKEN"
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine on
Options +FollowSymLinks
#RewriteRule ^api/(.*)$ http://vivule.ee/api/$1 [P,L]
# Don't rewrite files or directories
RewriteCond %REQUEST_FILENAME -f [OR]
RewriteCond %REQUEST_FILENAME -d
RewriteRule ^ - [L]
# Rewrite everything else to index.html to allow html5 state links
RewriteRule ^ index.html [L]
RewriteCond %REQUEST_URI ^/$
RewriteCond %QUERY_STRING ^_escaped_fragment_=/?(.*)$
RewriteRule ^(.*)$ /snapshots/%1? [NC,L]
# Prerender.io stuff
<IfModule mod_proxy_http.c>
RewriteCond %HTTP_USER_AGENT Googlebot|bingbot|Googlebot-Mobile|Baiduspider|Yahoo|YahooSeeker|DoCoMo|Twitterbot|TweetmemeBot|Twikle|Netseer|Daumoa|SeznamBot|Ezooms|MSNBot|Exabot|MJ12bot|sogou\sspider|YandexBot|bitlybot|ia_archiver|proximic|spbot|ChangeDetection|NaverBot|MetaJobBot|magpie-crawler|Genieo\sWeb\sfilter|Qualidator.com\sBot|Woko|Vagabondo|360Spider|ExB\sLanguage\sCrawler|AddThis.com|aiHitBot|Spinn3r|BingPreview|GrapeshotCrawler|CareerBot|ZumBot|ShopWiki|bixocrawler|uMBot|sistrix|linkdexbot|AhrefsBot|archive.org_bot|SeoCheckBot|TurnitinBot|VoilaBot|SearchmetricsBot|Butterfly|Yahoo!|Plukkie|yacybot|trendictionbot|UASlinkChecker|Blekkobot|Wotbox|YioopBot|meanpathbot|TinEye|LuminateBot|FyberSpider|Infohelfer|linkdex.com|Curious\sGeorge|Fetch-Guess|ichiro|MojeekBot|SBSearch|WebThumbnail|socialbm_bot|SemrushBot|Vedma|alexa\ssite\saudit|SEOkicks-Robot|Browsershots|BLEXBot|woriobot|AMZNKAssocBot|Speedy|oBot|HostTracker|OpenWebSpider|WBSearchBot|FacebookExternalHit [NC,OR]
RewriteCond %QUERY_STRING _escaped_fragment_
# Only proxy the request to Prerender if it's a request for HTML
RewriteRule ^(?!.*?(\.js|\.css|\.xml|\.less|\.png|\.jpg|\.jpeg|\.gif|\.pdf|\.doc|\.txt|\.ico|\.rss|\.zip|\.mp3|\.rar|\.exe|\.wmv|\.doc|\.avi|\.ppt|\.mpg|\.mpeg|\.tif|\.wav|\.mov|\.psd|\.ai|\.xls|\.mp4|\.m4a|\.swf|\.dat|\.dmg|\.iso|\.flv|\.m4v|\.torrent))(.*) http://service.prerender.io/http://vivule.ee/$2 [P,L]
</IfModule>
</IfModule>
但是,如果我像prerender.io 上推荐的那样使用转义片段进行测试,似乎什么也没有发生。你可以自己查:http://vivule.ee/?_escaped_fragment_=或http://vivule.ee/0/?_escaped_fragment_=
如果我尝试使用 facebook 分享功能,它仍然会得到没有被 angular 脚本修改的 html。 (试过这个工具:https://developers.facebook.com/tools/debug/og/object/获取最新数据,但无济于事。
任何想法如何测试预渲染是否正常工作?
【问题讨论】:
你能检查一下你是否启用了 mod_rewrite.c 和 mod_proxy_http.c 吗?此外,您应该删除您的 Prerender.io 令牌并通过我们的 UI 生成一个新令牌,这样任何人都无法使用您的令牌来缓存您帐户下的页面。 @Prerender.io 感谢您的建议,一些优秀的管理员已经删除了令牌。到主题 - mod_rewrite.c 和 mod_proxy_http.c 都已启用。 PS!哇,没想到会直接听到开发人员的消息:D @Prerender.io Google Webmaster Tools 是否应该呈现缓存版本? 【参考方案1】:好的,我修复了它,似乎我所要做的就是将“RewriteRule ^ index.html [L]”移动到 .htaccess 文件的末尾。 .htaccess 文件是从上到下读取的,我猜它以前从未进入预渲染部分。
这是有效的 .htaccess 代码: # 将 YOUR_TOKEN 更改为您的预渲染令牌,如果您想缓存 url 并查看抓取统计信息,请取消注释该行 # 将http://example.com(在最后一个 RewriteRule 的末尾)更改为您的网站 url
<IfModule mod_headers.c>
RequestHeader set X-Prerender-Token "MY SECRET TOKEN"
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine on
Options +FollowSymLinks
#RewriteRule ^api/(.*)$ http://vivule.ee/api/$1 [P,L]
# Don't rewrite files or directories
RewriteCond %REQUEST_FILENAME -f [OR]
RewriteCond %REQUEST_FILENAME -d
RewriteRule ^ - [L]
RewriteCond %REQUEST_URI ^/$
RewriteCond %QUERY_STRING ^_escaped_fragment_=/?(.*)$
RewriteRule ^(.*)$ /snapshots/%1? [NC,L]
# Prerender.io stuff
<IfModule mod_proxy_http.c>
RewriteCond %HTTP_USER_AGENT Googlebot|bingbot|Googlebot-Mobile|Baiduspider|Yahoo|YahooSeeker|DoCoMo|Twitterbot|TweetmemeBot|Twikle|Netseer|Daumoa|SeznamBot|Ezooms|MSNBot|Exabot|MJ12bot|sogou\sspider|YandexBot|bitlybot|ia_archiver|proximic|spbot|ChangeDetection|NaverBot|MetaJobBot|magpie-crawler|Genieo\sWeb\sfilter|Qualidator.com\sBot|Woko|Vagabondo|360Spider|ExB\sLanguage\sCrawler|AddThis.com|aiHitBot|Spinn3r|BingPreview|GrapeshotCrawler|CareerBot|ZumBot|ShopWiki|bixocrawler|uMBot|sistrix|linkdexbot|AhrefsBot|archive.org_bot|SeoCheckBot|TurnitinBot|VoilaBot|SearchmetricsBot|Butterfly|Yahoo!|Plukkie|yacybot|trendictionbot|UASlinkChecker|Blekkobot|Wotbox|YioopBot|meanpathbot|TinEye|LuminateBot|FyberSpider|Infohelfer|linkdex.com|Curious\sGeorge|Fetch-Guess|ichiro|MojeekBot|SBSearch|WebThumbnail|socialbm_bot|SemrushBot|Vedma|alexa\ssite\saudit|SEOkicks-Robot|Browsershots|BLEXBot|woriobot|AMZNKAssocBot|Speedy|oBot|HostTracker|OpenWebSpider|WBSearchBot|FacebookExternalHit [NC,OR]
RewriteCond %QUERY_STRING _escaped_fragment_
# Only proxy the request to Prerender if it's a request for HTML
RewriteRule ^(?!.*?(\.js|\.css|\.xml|\.less|\.png|\.jpg|\.jpeg|\.gif|\.pdf|\.doc|\.txt|\.ico|\.rss|\.zip|\.mp3|\.rar|\.exe|\.wmv|\.doc|\.avi|\.ppt|\.mpg|\.mpeg|\.tif|\.wav|\.mov|\.psd|\.ai|\.xls|\.mp4|\.m4a|\.swf|\.dat|\.dmg|\.iso|\.flv|\.m4v|\.torrent))(.*) http://service.prerender.io/http://vivule.ee/$2 [P,L]
</IfModule>
# Rewrite everything else to index.html to allow html5 state links
RewriteRule ^ index.html [L]
</IfModule>
【讨论】:
感谢您找到解决方案 +1。你能告诉我你是怎么知道 prerender.io 工作的吗?我复制了你的代码,最终我可以通过 googlebots 的 500 错误!但我的 prerender.io 上仍然有一个错误,说“我们还没有看到你的 Prerender 令牌的请求。”。我必须等待一段时间,或者我可以尝试其他方法来确定它是否正常工作?提前谢谢你 如果我没记错的话,它马上就开始工作了。因此,您可以立即尝试,而不是等待(如果我没记错的话,大约 4 年前就这样做了)。以上是关于如何检查 prerender.io 在我的 angularjs 网站上是不是正常工作?的主要内容,如果未能解决你的问题,请参考以下文章
prerender.io 搜索引擎优化 部署成windows服务 实现开机自动开启服务
ini 为nginx改变了prerender.io nginx.conf
javascript 从控制台清除prerender.io中的所有缓存页面
apache_conf Apache的官方prerender.io .htaccess。
apache_conf Apache的官方prerender.io .htaccess。
javascript NodeJs ExpressJS中间件,允许特定于bot / crawler的路由。基于OS项目的Prerender.IO中间件用于节点。