
nginx に次の行があります:
try_files $uri $uri/ /index.html;
私の理解する限りでは、見つからないファイルへのすべてのクエリを に書き換えますindex.html
。つまり、index.html?foo=bar
同じidontexist.html?foo=bar
結果が残り、Google のクロールが台無しになります。
書き換えずにデフォルトの URL にリダイレクトするにはどうすればよいですか?
完璧な解決策は、 がなくても構いませんindex.html
。301http://domain.com/idontexist.html?foo=bar
を使用してリダイレクトします。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;