首页 > 解决方案 > [htaccess]为浏览器加载 Angularjs 为机器人加载 SSR

问题描述

我想出了自己的解决方案来解决我的 SEO 和其他机器人渲染我的网络的问题(比如一些社交机器人 whatsapp 机器人、facebook 机器人、twitter 机器人等)。我使用 ejs (nodejs) 在后端创建了相同的路由,以提供带有预先呈现的元标记的 html 页面。我希望所有机器人都呈现服务器 html 文件,但对于浏览器,我想加载 Angular 应用程序。

这是我目前使用的 .htaccess 仅服务于我的 Angular 应用程序

RewriteEngine On 
Options FollowSymLinks

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /#/$1 [L]

我怎样才能达到所需的结果?

标签: angular.htaccessserver-side-rendering

解决方案


感谢vinceMeens,我能够使用以下 htaccess 解决我的问题。

RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    # Go to it as is
    RewriteRule ^.*$ - [NC,L]

    RewriteCond %{HTTP_USER_AGENT} baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora\ link\ preview|showyoubot|Whatsapp|whatsapp|outbrain|pinterest|googlebot|bingbot|yandex|showyoubot|outbrain|slackbot|vkShare|W3C_Validator  [NC,OR]
    RewriteCond %{REQUEST_URI} "/api/" [NC,OR]
    RewriteCond %{QUERY_STRING} _escaped_fragment_

    RewriteRule ^(.*)$ index.php?$1 [L,QSA]

    RewriteRule ^(.*)$ /#/$1 [L]

推荐阅读