ドメインで404エラーが発生するたびに、ホームページに自動的に301と表示されます。
リンクされている古いブログ投稿などがたくさんありますが、ブログにはありません。誰かが別のサイトからクリックすると、ホームページに追いやられてしまいます。
Nginx内でこれを行うにはどうすればよいですか?
server {
listen 12680;
root /home/noahc/webapps/nginx/html/noahc/;
server_name www.noahc.net, noahc.net;
error_page 404 @foobar;
location @foobar {
rewrite .* / permanent;
}
}
これが私がwebfactionを使って仕事をするようになった最終的な解決策です。
server {
listen 12440;
root /some/path/here/nginx/html/noahc/;
server_name www.domain.net, domain.net;
port_in_redirect off;
location /{
error_page 404 = @foobar;
}
location @foobar {
rewrite .* / permanent;
}
}
それを介してより速い方法があります:
error_page 404 = @foobar;
location @foobar {
return 301 /;
}
「より高速」とは、書き換えの代わりに return を使用することで、「Webサーバー内で無駄な正規表現の一致がない」ことを意味します。
これは機能するはずです:
error_page 404 = @foobar;
location @foobar {
rewrite .* / permanent;
}
error_page
設定はすでにこれを行うことができます:
error_page 404 =301 http://example.com/;