ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Nginx. Перенаправление ошибки 404 на главную страницу в WordPress

Есть довольно много плагинов WordPress, которые помогут вам управлять ошибкой 404, чтобы улучшить ваш SEO. Ошибка 404 не найдено может возникнуть из-за удаления старых постов или страниц и не создает редирект или от спам-ботов. Это руководство покажет вам, как использовать Nginx для перенаправления ошибок 404 на главную страницу WordPress.

Это руководство требует Nginx и корневого доступа, так что вы можете изменить ваши виртуальные хосты Nginx.

Nginx. Перенаправление ошибки 404 на главную страницу в WordPress

Откройте виртуальный хост Nginx

sudo nano /etc/nginx/sites-available/andreyex.ru

 

Добавьте этот фрагмент в блоке сервера

# определить страницу ошибки
error_page 404 = @notfound;

# Адрес страницы ошибки 301 для редиректа
location @notfound {
    return 301 /;
}

 

Если вы не хотите делать 301 постоянную переадресацию, вы можете в место этого использовать 302 (временный редирект)

# определить страницу ошибки
error_page 404 = @notfound;

# адрес страницы ошибки 302 для перенаправления
location @notfound {
    return 302 /;
}

 

В РНР блоке установить fastcgi_intercept_errors в on

В качестве альтернативы вы можете поместить его в файл nginx.conf в блок http { block

location ~ \.php$ {
    include /etc/nginx/fastcgi_params;
    # перехват ошибки 404 для редиректа
    fastcgi_intercept_errors on;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

 

Для наглядности здесь приведен пример виртуального хоста в Nginx для WordPress с указанными выше добавками

server {
    listen 80;
    server_name andreyex.ru;

    root /var/www/nginx/andreyex.ru;
    index index.php index.html;

    access_log /var/log/nginx/andreyex.ru.log;
    error_log /var/log/nginx/andreyex.ru.error.log;

    location / {
        try_files $uri $uri/ /index.php?$args /;
    }

    # определить страницу ошибки
    error_page 404 = @notfound;

    # расположение страницы ошибки для редиректа 301
    location @notfound {
        return 301 /;
    }

    location ~ \.php$ {
        include /etc/nginx/fastcgi_params;
        # перехват ошибки 404 для редиректа
        fastcgi_intercept_errors on;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~ /\.ht {
        deny all;
    }

    location = /nginx.conf {
        deny all;
    }
}

 

Проверьте ваш синтаксис виртуального хоста Nginx перед активацией

sudo nginx -t

 

Если ваш синтаксис был ОК, то перезагрузить службу Nginx

sudo service nginx reload

 

Это должно работать!

Nginx. Перенаправление ошибки 404 на главную страницу в WordPress

Exit mobile version