我在 nginx 中有以下几行:
try_files $uri $uri/ /index.html;
据我了解,它会将所有对未找到的文件的查询重写为index.html
。这意味着,它index.html?foo=bar
会idontexist.html?foo=bar
留下相同的结果,从而搞砸了 Google 的抓取。
我怎样才能不重写而是重定向到默认 URL?
完美的解决方案是即使没有index.html
。因此,http://domain.com/idontexist.html?foo=bar
使用 301 重定向到http://domain.com/?foo=bar
答案1
location / {
try_files $uri $uri/ @to_home;
...
}
location @to_home {
return 301 /$is_args$args;
}
答案2
我缩短了上面的 VBart 代码片段。它按预期工作:
try_files $uri $uri/ / =301;