Столкнулся с проблемой, при переходе с много страничного сайта на лендинг на WP. В Поиске было много линков со старыми адресами, но это же не красиво, поэтому пришлось сделать 301 редирект всех 404 страниц.
В конфигурационном файле виртуалхоста после основного location добавил еще переменную и еще один location
# Определяем страницу ошибки
1 |
И отправляем все страницы по параметру на главную
Так же нужно добавить перехват ошибок в php-fpm инклуде хоста
#Перехват ошибки 404
1 2 3 4 5 6 7 | fastcgi_intercept_errors on; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php-fpm/insom.socket; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } |
Пример полного конфиг файла хоста
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | server { listen 80; server_name host.com.ua; access_log /var/log/nginx/host.com.ua.access.log main; error_log /var/log/nginx/host.com.ua.error.log; root /var/www/user/host.com.ua/www; index index.php index.html index.htm; location ~* ^.+\.(rss|atom|jpg|jpeg|gif|png|ico|rtf|js|css|woff)$ { expires max; } location / { try_files $uri $uri/ /index.php?q=$request_uri; } error_page 404 = @notfound; location @notfound { return 301 /; } location ~ \.php$ { try_files $uri =404; fastcgi_intercept_errors on; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php-fpm/host.socket; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } |
Этот конфиг был применен для CMS WordPress, на других еще не проверял.
Всем удачи.