我刚刚用create-react-app写了一篇博客。除此之外,我还写了一个小服务,它将使用服务器上的chrome为Google或Facebook等抓取工具呈现网站。
所以我应该向普通用户提供http://example.com/path-to-page
,并且http://myprerenderer.com/render/http://example.com/path-to-page
应该提供给抓取工具等。
这就是我的.htacces目前的样子:
RewriteEngine on
# 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]
# redirect non www to www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [L,R=301]
# One year for image files
<filesMatch ".(jpg|jpeg|png|gif|ico|svg)$">
Header set Cache-Control "max-age=31536000, public"
</filesMatch>
# One month for css and js
<filesMatch ".(css|js)$">
Header set Cache-Control "max-age=2628000, public"
</filesMatch>
这适用于我访问的每个网址都由反应应用程序index.html服务(我正在使用反应路由器btw。)。
现在,我如何调整此场景的.htacces: 爬虫访问该站点,被重定向(或代理?)到预渲染器,然后使用chrome为该网站提供服务 - 但如果该预渲染服务已访问该站点,则不应该有另一个重定向。
谢谢!
答案 0 :(得分:1)
您可能希望添加类似于Prerender.io .htaccess的内容来检测爬虫和代理(而非重定向)请求到预呈现服务器: