AngularJS SEO 简易教程
admin
2022-06-21 14:08
1. 搭建Prerender服务
实际上就是搭建了一个Prerender服务器,给它传递参数,它帮你把JS动态页面静态化.
git clone https://github.com/prerender/prerender.git
然后cd Prerender
进入目录npm install
安装模块依赖node server.js
运行服务(可用nohup node server.js &
使其运行于后台)
这里有一个坑,Prerender默认用3000端口,注意你的端口不要被占用了,否则它会给出很奇怪的错误提示.
2. 修改nginx.conf
要达到以下目的:
普通用户访问,会看到正常页面(交给localhost:4000去处理请求)
如果是爬虫访问,就交给Prerender服务去处理请求
因此,修改nginx.conf的server段如下:
server {
listen 80;
server_name www.tomi.in tomi.in;
location ~* / {
set $prerender 0;
if ($http_user_agent ~* "baiduspider|twitterbot|facebookexternalhit|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest|slackbot") {
set $prerender 1;
}
if ($args ~ "_escaped_fragment_") {
set $prerender 1;
}
if ($uri ~ "\.(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)") {
set $prerender 0;
}
if ($prerender = 1) {
rewrite .* /$scheme://$host$request_uri? break;
proxy_pass http://localhost:3000;
}
if ($prerender = 0) {
proxy_pass http://localhost:4000;
}
}
}
这里做了两件事:
如果是搜索引擎爬虫(header判断)或者有指定的参数
_escaped_fragment_
那么就反向代理给内部的Prerender服务(localhost:3000),让它去渲染页面如果是真实的用户,就走正常渠道(localhost:4000)
3. Demo
嗯,之前给过demo,但现在处于安全性的考虑,大家还是直接在百度搜索site:lsjlt.com
好了。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341