我有一个用 AngularJS 编写的网站。网站使用 hashbang 模式,目前我遇到了预渲染的情况。
我的网站的 URL 如下:
http://www.watchawearin.com/#!/item/511
并且我有一个 URL 上的后端:http://www.watchawearin.com/api/
。
现在,当 Facebook 访问上述 URL 时,它会变成:http://www.watchawearin.com/?_escaped_fragment_=/item/511
没关系,我在 nginx 中有一个这样的配置:
if ($prerender = 1) {
rewrite .* /api/prerender break;
proxy_pass $scheme://www.watchawearin.com;
}
Facebook 获取预渲染的页面,但被重定向到:http://www.watchawearin.com/api/prerender/?_escaped_fragment_=%2Fitem%2F511
。
我可以实现提供预渲染的页面,但不进行重定向吗?
答案1
好的,我找到了解决方案:
if ($prerender = 1) {
rewrite .* /api/ last;
}
在 /api/ 中我有一个 PHP 框架后端,其中我有一个路由匹配?_escaped_fragment_=/...
,我可以用它做任何我想要的事情。