Nginx: Возврат 301 Редиректа При Ошибке 404



Что я хочу делать всякий раз, когда я получаю ошибку 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;
}
}
980   4  

4 ответов:

Есть более быстрый путь:

error_page 404 = @foobar;

location @foobar {
  return 301 /;
}

Под " быстрее "я подразумеваю" нет бесполезного сопоставления регулярных выражений внутри веб-сервера", используя return вместо перезаписи.

Это должно сработать:

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 уже может сделать это для вас:

error_page 404 =301 http://example.com/;

Comments

    Ничего не найдено.