.htaccess: Как использовать обратные ссылки %N, полученные в RewriteСond, в других условиях?

День добрый!
Хочу настроить так, чтобы каждый год все ссылки со старым годом автоматически редиректились на текущий год: https://site.com/folder/2020-february/ --->. https://site.com/folder/2021-february/

Как сделано сейчас:

RewriteCond %{REQUEST_URI} ^(.*)/2020(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)/2019(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)/2018(.*)$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%1/2021%2 [R=301,L]
#То есть каждый год приходится править условия


Хочу чтобы было все автоматически:
RewriteCond %{REQUEST_URI} ^(.*)/(2[0-9]{3})(.*)$
RewriteCond %{TIME_YEAR} >%2
RewriteRule ^(.*)$ https://%{HTTP_HOST}%1/%2%3 [R=301,L]

Но так не получается. Догадываюсь что проблема во второй строке... Куда дальше копать не знаю
Подскажите пожалуйста, как сделать правильно?
  • Вопрос задан
  • 69 просмотров
Решения вопроса 1
@dodo512
Если там условие проверять не строго больше, а просто несовпадение %{TIME_YEAR} и %2
RewriteCond %{REQUEST_URI}  ^(.*)/(2\d{3})(-.*)$
RewriteCond %{TIME_YEAR}_%2 !^(\d+)_\1$
RewriteRule ^ https://%{HTTP_HOST}%1/%{TIME_YEAR}%3 [R=301,L]


В Apache >=2.4 есть expr и условие можно проверить так %{TIME_YEAR} -gt $2
RewriteCond expr "%{REQUEST_URI} =~ m#^(.*)/(2[0-9]{3})(-.*)$# && %{TIME_YEAR} -gt $2"
RewriteRule ^ https://%{HTTP_HOST}%1/%{TIME_YEAR}%3 [R=301,L]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы