出于SEO的目的,我有一个渲染服务器,它将为googlebot提供完全渲染的网页。
IF
UA is googlebot THEN proxy pass to rendering server
ELSE
serve page normally
现在的问题是,当我将if
和try_files
混合在一起时,它将永远无法工作。
如何将以下配置更改为与上述逻辑相同的内容?
location ~ ^/web/(.*) {
if ($http_user_agent ~* "googlebot|bingbot|yandex") {
proxy_pass http://render.domain.com;
break;
}
try_files $uri /project/$1 /project/dist/$1;
}
答案 0 :(得分:1)
在该配置中,您有两个正则表达式。 nginx
遇到新的正则表达式时,它将重置编号的捕获。
因此,尽管您期望$1
是location
语句的捕获,但实际上它是if
语句的空捕获。
您可以改用命名捕获。例如:
location ~ ^/web/(?<name>.*) {
if (...) { ... }
try_files $uri /project/$name /project/dist/$name;
}