WordPress по умолчанию добавляет слэши (/) в конце URL, чтобы обеспечить корректную структуру ссылок. Однако в некоторых случаях это может приводить к проблемам с SEO, конфликтам с плагинами или хостингом, а также некорректной обработке URL на стороне сервера. В этой статье мы разберём, как удалить автоматически добавляемые слэши в WordPress, что это даёт и как сделать это безопасно.
Почему WordPress добавляет слэши в URL и когда это проблема
WordPress использует функцию user_trailingslashit() для добавления слэшей в конце URL, чтобы сделать их каноничными и избежать дублей страниц с разными адресами. Это помогает поисковым системам и серверу однозначно интерпретировать адрес.
Однако бывают ситуации, когда слэши мешают:
- Конфликты с серверной конфигурацией (например, Nginx, где правила перезаписи чувствительны к слэшам).
- Некоторые REST API или AJAX-запросы не ожидают слэш в конце.
- SEO-оптимизация под конкретные требования, когда слэши нежелательны.
Поэтому важно знать, как убрать эти слэши без нарушения работы сайта.
Удаление слэшей с помощью фильтров WordPress
Самый простой способ контролировать добавление слэшей — использовать фильтр user_trailingslashit. Ниже приведён пример функции wpconfig_remove_trailing_slash, которая отключает добавление слэшей на всех URL:
function wpconfig_remove_trailing_slash($string, $type) {
return untrailingslashit($string);
}
add_filter('user_trailingslashit', 'wpconfig_remove_trailing_slash', 10, 2);Эта функция вызывает встроенную функцию WordPress untrailingslashit(), которая удаляет слэш в конце строки. Подключение к фильтру гарантирует, что все URL, генерируемые WordPress, будут без завершающего слэша.
Однако будьте внимательны — этот метод может повлиять на работу некоторых плагинов, поэтому тестируйте сайт после внедрения.
Удаление слэшей только для REST API и AJAX-запросов
Иногда нужно убрать слэши только для определённых типов запросов, например, REST API или AJAX. В этом случае можно сделать проверку внутри функции:
function wpconfig_remove_slash_for_api($string, $type) {
if (defined('REST_REQUEST') && REST_REQUEST) {
return untrailingslashit($string);
}
if (defined('DOING_AJAX') && DOING_AJAX) {
return untrailingslashit($string);
}
return $string;
}
add_filter('user_trailingslashit', 'wpconfig_remove_slash_for_api', 10, 2);Таким образом, обычные страницы сайта сохранят стандартный вид URL со слэшем, а для API-запросов слэш будет удалён, что повысит совместимость с внешними сервисами и скриптами.
Использование плагинов для управления URL и слэшами
Если вы предпочитаете решения без кода, можно использовать плагины, которые помогают управлять URL-структурой:
- Clearfy Pro — мощный плагин для оптимизации WordPress, в том числе управления SEO-настройками, включая работу со слэшами.
- WPRemark — плагин с расширенными возможностями управления URL и редиректами.
Эти плагины позволяют гибко настраивать поведение URL без риска сломать работу сайта.
Удаление слэшей через .htaccess и серверные правила
В дополнение к настройкам WordPress можно настроить сервер для удаления слэшей на уровне веб-сервера. Например, для Apache в файле .htaccess можно добавить правило:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ /$1 [R=301,L]Это правило перенаправит все запросы с завершающим слэшем на версию URL без слэша, если это не директория. Для Nginx настройка будет выглядеть иначе и требует правки конфигурационных файлов.
Однако такой подход требует аккуратности и понимания серверных настроек, чтобы не вызвать циклы редиректов или ошибки 404.
Проверка и тестирование после удаления слэшей
После внедрения любого из методов удаления слэшей обязательно проведите комплексное тестирование:
- Проверьте основные страницы сайта, чтобы убедиться, что они работают без ошибок.
- Проверьте работу REST API и AJAX-запросов, если меняли фильтры для них.
- Используйте инструменты типа Google Search Console для анализа состояния индексации и отсутствия дублей.
- Проверьте работу плагинов, особенно SEO и кеширующих.
Если возникают проблемы, попробуйте временно отключить код или плагины и определить источник конфликтов.
Резюме и рекомендации
Удаление автоматически создаваемых слэшей в WordPress — задача, которая может помочь решить специфические проблемы с SEO, сервером и совместимостью. Для этого лучше использовать фильтр user_trailingslashit с аккуратной проверкой условий, а при необходимости — дополнительно конфигурировать сервер.
Если не хотите заниматься кодом, можно воспользоваться плагинами Clearfy Pro или WPRemark, которые помогут гибко управлять URL и SEO-настройками.