nginx - 无需重定向的代理传递

nginx - 无需重定向的代理传递

我有一个用 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_=/...,我可以用它做任何我想要的事情。

相关内容