nginx を強制的にサーバールートにリダイレクトする

nginx を強制的にサーバールートにリダイレクトする

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;

関連情報