Чтобы правильно настроить редиректы в NGINX для вашего WordPress сайта, следует учитывать, что если вы хотите добавить завершающий слэш к URL, но одновременно не нарушить работу REST API, необходимо тщательно прописать правила.
Вы можете использовать следующую конфигурацию, которая будет обрабатывать редиректы на URL с завершающим слэшем, избегая конфликтов с API и админкой WordPress:
```nginx
server {
server_name site.ru www.site.ru;
listen 45.130.42.228:443 ssl http2;
ssl_certificate "/var/www/httpd-cert/site.ru_2024-04-26-20-58_20.crt";
ssl_certificate_key "/var/www/httpd-cert/site.ru_2024-04-26-20-58_20.key";
add_header Strict-Transport-Security "max-age=31536000" always;
# Настройка редиректов со всех страниц без завершающего слэша
location / {
# Игнорируем REST API запросы
if ($request_uri !~ ^/wp-json) {
rewrite ^/(.*[^/])$ /$1/ permanent;
}
try_files $uri $uri/ /index.php?$args; # Для работы WordPress
}
# Добавьте ваши другие location блоки (например, для статических файлов и т. д.) здесь
}
```
### Пояснение:
1. **Проверка на `wp-json`**: Если URL начинается с `/wp-json`, то редирект не применяется. Это позволяет избежать проблем с формами и другими частью WordPress, использующими REST API.
2. **Использование `try_files`**: Проверяет, существует ли запрашиваемый файл, если нет — передаёт запрос в `index.php`, что является стандартным способом обработки запросов в WordPress.
3. **Редирект**: Применяется правило редиректа, которое добавляет завершающий слэш к адресам, которые не заканчиваются на `/`, если они не являются файлами и не попадают под исключения.
Не забудьте протестировать конфигурацию после изменений, для этого можно использовать команду:
```bash
nginx -t
```
Если тест прошёл успешно, перезапустите NGINX:
```bash
systemctl restart nginx
```
Теперь ваши редиректы должны работать корректно, и все запросы без завершающего слэша будут переадресовываться на соответствующие URL с завершающим слэшем без нарушений в работе Contact Form 7 или других частей сайта.