Чтобы настроить правильное переопределение (rewrite) для перенаправления URL с символом «/» в конце в Nginx, и при этом исключить админскую часть WordPress, можно сделать следующее. Ваш исходный код имеет правильную структуру, но может потребовать некоторые уточнения, чтобы избежать проблем с админкой и сделать правильные редиректы.
Вот пример конфигурации, который может решить вашу задачу:
```nginx
location /blog {
# Исключаем админку WordPress
location ~ ^/blog/wp-admin {
# Обрабатываем админку без редиректов
try_files $uri $uri/ @wordpress;
}
# Обрабатываем остальные запросы
try_files $uri $uri/ @wordpress;
# Перенаправляем URL без слэша в конце на URL со слэшем
rewrite ^(/blog/.*[^/])$ $1/ permanent;
}
location @wordpress {
rewrite /blog /blog/index.php;
}
location ~ ^/blog/index\.php(/.*)?$ {
fastcgi_split_path_info ^(/blog/index.php)(/.*)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
include fastcgi_params;
}
```
### Объяснение:
1. **Исключение `/wp-admin`:** Внутри блока `location /blog`, добавлен новый блок `location ~ ^/blog/wp-admin`, который разрешает доступ к административной части WordPress без перенаправлений. Это помогает предотвратить проблемы с доступом к админке.
2. **Перенаправление:** Регулярное выражение `rewrite ^(/blog/.*[^/])$ $1/ permanent;` работает как раньше и перенаправляет запросы, которые не оканчиваются слэшем.
3. **Обработка остальных запросов:** Все запросы, не попадающие под `/wp-admin`, будут обработаны с использованием существующих правил. Это гарантирует, что обычные запросы к страницам будут направлены на обработку индекса WordPress.
### Примечание:
После внесения изменений в конфигурацию сервера не забудьте перезагрузить Nginx, чтобы применить изменения:
```bash
sudo systemctl reload nginx
```
Проверьте, что теперь все страницы сайта открываются со слэшем в конце, включая страницы, и что админка WordPress функционирует корректно.