@pomogitemne

Почему редирект 301 срабатывает один раз?

Нужно сделать редирект 301 со страницы без слеша на страницу со слешем в nginx.conf.

server {
rewrite ^([^.]*[^/])$ $1/ permanent;
}


Но этот код работает нормально только если отключить плагин кеширования WP Rocket. Если плагин включен, то редирект срабатывает только один раз и только после очистки кеша. Может, нужно задать какие-нибудь Cache-Control параметры?
  • Вопрос задан
  • 64 просмотра
Пригласить эксперта
Ответы на вопрос 1
нет нельзя так делать.
посколкьу не всегда он нужен.
Вот полный алгоритм когда что должно быть.

############################################################################
#### Убираем слеши в конце URL для статических файлов (содержит точку)  ####
############################################################################
RewriteCond %{REQUEST_URI} \..+$
   # Если файл содержит точку.
RewriteCond %{REQUEST_FILENAME} !-d
   # И это не директория.
RewriteCond %{REQUEST_FILENAME} -f
   # Является файлом.
RewriteCond %{REQUEST_URI} ^(.+)/$
   # И в конце URL есть слеш.
RewriteRule ^(.+)/$ /$1 [R=301,L]
   # Исключить слеш.

############################################################################
#### Добавляем слеш(/), если его нет, и это не файл.                    ####
############################################################################
RewriteCond %{REQUEST_URI} !(.*)/$
   # Если слеша в конце нет.
RewriteCond %{REQUEST_FILENAME} !-f
   # Не является файлом.
RewriteCond %{REQUEST_URI} !\..+$
   # В URL нет точки (файл).
RewriteCond %{REQUEST_URI} ^(.+)$
 # В URL есть хоть один символы
RewriteRule ^(.*)$ $1/ [L,R=301]
  # Добавляем слеш в конце.


Так что вам нужно пересмотреть свой конфиг в перую очередь.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы