Angularjs Prerender.io不缓存我的页面
因此,我试图为我的AngularJS应用程序设置一个ExpressJS后端,如下所示。我完全按照指示做了,唯一的区别是我启用了Angularjs Prerender.io不缓存我的页面,angularjs,node.js,express,seo,prerender,Angularjs,Node.js,Express,Seo,Prerender,因此,我试图为我的AngularJS应用程序设置一个ExpressJS后端,如下所示。我完全按照指示做了,唯一的区别是我启用了HTML5模式。我已将元(name=“fragment”content=“!”)包含在我的index.jade中,并将prerender令牌添加到我的server.js文件中(使用包),但不知怎的,我的页面似乎没有被缓存或生成任何爬网统计信息 配置咖啡 Server.JS 您应该从配置中删除此行: .set('prerenderServiceUrl', 'http://w
HTML5模式
。我已将元(name=“fragment”content=“!”)
包含在我的index.jade
中,并将prerender令牌添加到我的server.js
文件中(使用包),但不知怎的,我的页面似乎没有被缓存或生成任何爬网统计信息
配置咖啡
Server.JS
您应该从配置中删除此行:
.set('prerenderServiceUrl', 'http://www.mydomain.co.com/')
服务URL应该指向Prerender服务器,因此您不应该将其设置为您的网站URL。我认为您应该确保在应用程序中实现了正确的Prerender.io配置 我测试了以下代码,并将其正确缓存在prerender.io仪表板中
File: ../static/routes.json content
["/","/content/terms-conditions","/content/about-us",..]
File: /config/webpack.production.js
const axios = require('axios');
const routesData = require('../static/routes.json'),
console.log("PRERENDER.io caching start for Crawler Bots to SEO indexing");
const host = 'your domain name with http or https';
const prerenderToken = '****';
const prerenderUrl = 'https://api.prerender.io/recache';
var today = new Date();
var date = today.getFullYear()+'-'+(today.getMonth()+1)+'-'+today.getDate();
var time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
var dateTime = date+' '+time;
console.log("Start date time : "+dateTime);
for (const route of routesData) {
const fullRoute = host + route + '/index.html';
console.log(`Caching URL ${fullRoute}`);
var prerednerData = {
'prerenderToken': prerenderToken,
'url': fullRoute
};
axios.post(prerenderUrl, prerednerData)
.then((response) => {
console.log('Product URL: '+prerednerData['url']);
console.log('Status Code: '+response.status);
})
.catch((error) => {
console.log('Product URL: '+prerednerData['url']);
console.log('Error: '+error);
});
}
File: .htaccess
Options -Indexes
<IfModule mod_headers.c>
RequestHeader set X-Prerender-Token "****"
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
# Pre-render HTML for search crawler bots to indexing
<IfModule mod_proxy_http.c>
RewriteCond %{HTTP_USER_AGENT} googlebot|bingbot|yandex|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora\ link\ preview|showyoubot|outbrain|pinterest|slackbot|vkShare|W3C_Validator [NC,OR]
RewriteCond %{QUERY_STRING} _escaped_fragment_
# Only proxy the request to Prerender.io 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|\.ttf|\.woff|\.svg))(.*) http://service.prerender.io/https://www.globalshop.com.au/$2 [NE,L,R=301]
</IfModule>
RewriteCond %{HTTP_HOST} www.domainname.com$ [NC]
RewriteRule ^(.*)$ https://www.domainname.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^robots\.txt$ robots-disallow.txt [L]
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^ index.html
</IfModule>
文件:../static/routes.json内容
[“/”、“/content/terms-conditions”、“/content/about-us”、…]
文件:/config/webpack.production.js
const axios=require('axios');
const routesData=require('../static/routes.json'),
log(“PRERENDER.io缓存启动,用于爬虫机器人搜索引擎优化索引”);
const host='您的域名与http或https';
常量prerenderToken='**';
const prerenderUrl='1〕https://api.prerender.io/recache';
var today=新日期();
var date=today.getFullYear()+'-'+(today.getMonth()+1)+'-'+today.getDate();
var time=today.getHours()+“:“+today.getMinutes()+”:“+today.getSeconds();
var dateTime=日期+“”+时间;
日志(“开始日期时间:+dateTime”);
for(路由数据的常量路由){
const fullRoute=host+route+'/index.html';
log(`Caching URL${fullRoute}`);
var prerednerData={
“prerenderToken”:prerenderToken,
“url”:完整路径
};
axios.post(预渲染、预渲染数据)
。然后((响应)=>{
log('Product URL:'+prerednerData['URL']);
console.log('状态代码:'+响应.Status);
})
.catch((错误)=>{
log('Product URL:'+prerednerData['URL']);
console.log('错误:'+错误);
});
}
文件:.htaccess
选项-索引
RequestHeader集合X-Prerender-Token“***”
重新启动发动机
#将搜索爬虫机器人的HTML预呈现到索引
RewriteCond%{HTTP|u USER|u AGENT}googlebot | bingbot | yandex | baiduspider | facebookexternalhit | twitterbot | rogerbot | linkedinbot |嵌入| quora\link\preview | showyoubot | outbrain | pinterest | slackbot | vkShare | W3C验证程序[NC,或]
重写cond%{QUERY\u STRING}\u转义\u片段_
#如果是HTML请求,则仅将请求代理到Prerender.io
(10.js 124?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????|\.mov\.psd\.ai\.xls\.mp4\.m4a\.swf\.dat\.dmg\.iso\.flv\.m4v\.torrent\.ttf\.woff\.svg)(*)(*)http://service.prerender.io/https://www.globalshop.com.au/$2 [NE,L,R=301]
RewriteCond%{HTTP_HOST}www.domainname.com$[NC]
重写规则^(.*)$https://www.domainname.com/$1[R=301,L]
重写COND%{HTTP_HOST}!^www\[NC]
重写规则^robots\.txt$robots-disallow.txt[L]
RewriteCond%{HTTP:X-Forwarded-Proto}=HTTP
重写规则^https://%{HTTP_HOST}%{REQUEST_URI}[L,R=301]
RewriteCond%{REQUEST_FILENAME}-f[或]
RewriteCond%{REQUEST_FILENAME}-d
重写规则^-[L]
重写规则^index.html
干杯!我做了更改,但仍然不开心。在你告诉谷歌搜索机器人抓取你的页面后,是否需要一段时间才能显示统计数据?视情况而定。给我发封电子邮件,我会调查一下。todd@prerender.io
.set('prerenderServiceUrl', 'http://www.mydomain.co.com/')
File: ../static/routes.json content
["/","/content/terms-conditions","/content/about-us",..]
File: /config/webpack.production.js
const axios = require('axios');
const routesData = require('../static/routes.json'),
console.log("PRERENDER.io caching start for Crawler Bots to SEO indexing");
const host = 'your domain name with http or https';
const prerenderToken = '****';
const prerenderUrl = 'https://api.prerender.io/recache';
var today = new Date();
var date = today.getFullYear()+'-'+(today.getMonth()+1)+'-'+today.getDate();
var time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
var dateTime = date+' '+time;
console.log("Start date time : "+dateTime);
for (const route of routesData) {
const fullRoute = host + route + '/index.html';
console.log(`Caching URL ${fullRoute}`);
var prerednerData = {
'prerenderToken': prerenderToken,
'url': fullRoute
};
axios.post(prerenderUrl, prerednerData)
.then((response) => {
console.log('Product URL: '+prerednerData['url']);
console.log('Status Code: '+response.status);
})
.catch((error) => {
console.log('Product URL: '+prerednerData['url']);
console.log('Error: '+error);
});
}
File: .htaccess
Options -Indexes
<IfModule mod_headers.c>
RequestHeader set X-Prerender-Token "****"
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
# Pre-render HTML for search crawler bots to indexing
<IfModule mod_proxy_http.c>
RewriteCond %{HTTP_USER_AGENT} googlebot|bingbot|yandex|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora\ link\ preview|showyoubot|outbrain|pinterest|slackbot|vkShare|W3C_Validator [NC,OR]
RewriteCond %{QUERY_STRING} _escaped_fragment_
# Only proxy the request to Prerender.io 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|\.ttf|\.woff|\.svg))(.*) http://service.prerender.io/https://www.globalshop.com.au/$2 [NE,L,R=301]
</IfModule>
RewriteCond %{HTTP_HOST} www.domainname.com$ [NC]
RewriteRule ^(.*)$ https://www.domainname.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^robots\.txt$ robots-disallow.txt [L]
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^ index.html
</IfModule>