Angular Universal-仅针对Web爬虫进行预渲染吗?

dis*_*ame 6 server-side-rendering angular-universal

我打算将Angular Universal用于服务器端渲染(SSR),但这仅应用于来自选定搜索引擎的爬虫和漫游器。

我想要的是以下架构:

在此处输入图片说明

来源:https : //dingyuliang.me/use-prerender-improve-angularjs-seo/

按照官方指示设置SSR之后,我现在可以验证Googlebot(最终)是否“看到”了我的网站并且应该能够对其进行索引。

但是,目前所有请求都在服务器上呈现。有没有一种方法可以确定传入的请求是否来自搜索引擎,并仅为它们预渲染网站?

lol*_*ftw 3

您可以使用 Nginx 来实现这一点。

在 Nginx 中,您可以通过以下方式将请求转发到通用服务角度应用程序:

        if ($http_user_agent ~* "googlebot|yahoo|bingbot") {
            proxy_pass 127.0.0.1:5000; 
            break;
        }
        root /var/www/html;
Run Code Online (Sandbox Code Playgroud)

..假设您正在服务 Angular Universal via 127.0.0.1:5000

如果出现浏览器用户代理,我们通过以下方式提供页面root /var/www/html

所以完整的配置会是这样的..

server {
    listen 80 default;
    server_name angular.local;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $http_host;

        if ($http_user_agent ~* "googlebot|yahoo|bingbot") {
            proxy_pass 127.0.0.1:5000; 
            break;
        }

        root /var/www/html;
    }

}
Run Code Online (Sandbox Code Playgroud)

  • 还有几个机器人 `linkedinbot|googlebot|yahoo|bingbot|baiduspider|yandex|yeti|yodaobot|gigabot|ia_archiver|facebookexternalhit|twitterbot|developers\.google\.com` (2认同)