Как в wordpress добавить слэш в конце url на записях с 301 редиректом, если стоит кэширование?
Добрый день или утро или ночь, кто когда программит, такое и утро
Встала проблема слеша в конце url (адреса страницы), нужно чтобы все записи без слеша в конце переадресовывались с 301 редиректом на записи со слешем.
Вроде в браузере всё перекидывается и работает как надо а в вебмастере Яндекса пишет что нет редиректа и отдается страница с 200 статусом.
Начал копать – оказалась проблема в плагине Hyper Cache, оне кэширует страницу и потом тупо достает её готовую из кеша, не ставя редирект на страницу со слешем в конце.
А когда находишься на сайте под админом – то всё ОК, т.к. кэширование отключено и идет переадресация как надо.
Исправим это дело!
Заходим в папку «\wp-content\plugins\» и видим там файл «advanced-cache.php»
Вот этот файл и надо подправить. Находим строчку
1 |
hyper_cache_header('hit - plain' . $hyper_cache_group); |
php код добавить слэш в конце url на записях
и перед ней пишем следующий код:
1 2 3 4 5 6 7 8 |
$uri = preg_replace("/\?.*/i",'', $_SERVER['REQUEST_URI']); if (strlen($uri)>1) {// если не главная страница... if (rtrim($uri,'/')!=$uri) {} else { header("HTTP/1.1 301 Moved Permanently"); header('Location: https://'.$_SERVER['SERVER_NAME'].str_replace($uri, rtrim($uri,'/').'/', $_SERVER['REQUEST_URI'])); //exit(); } } |
Главное – есть один нюанс, при каждом сохранении/изменении настроек в этом плагине (Hyper Cache) файл будет генерироваться заново и его нужно править опять, поэтому в начале настраиваем плагин кэширования как Вам нужно а потом вносим в него изменения.
Хороших Вам редиректов и поменьше дублей