@NataliaCh

Что не так с rewrite rule?

Нужно вот такой url
http://site.ru/index.php?mode=archive&year=2019&number=2

редиректить на такой
https://site.ru/ru/archive/2019/2
year и number, понятное дело, могут быть любыми.

Пишу правила:
RewriteEngine on
RewriteCond %{QUERY_STRING} mode=archive 
RewriteCond %{QUERY_STRING} year=(\d+) 
RewriteCond %{QUERY_STRING} number=(\w+) 
RewriteRule .* /ru/archive/%1/%2/? [R=301,L]

Но перебрасывает на https://site.ru/index.php
Как написать правильно?
  • Вопрос задан
  • 50 просмотров
Решения вопроса 1
@dodo512
В начало файла .htaccess добавить
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING}  mode=archive
RewriteCond %{QUERY_STRING}  ^(?=.*?year=(\d+))(?=.*?number=(\d+))
RewriteRule ^index\.php$ /ru/archive/%1/%2/? [R=301,L]


Или
RewriteCond %{THE_REQUEST} ^\S+\s/index\.php\?(?=.*?mode=archive)(?=.*?year=(\d+))(?=.*?number=(\d+))
RewriteRule ^ /ru/archive/%1/%2/? [R=301,L]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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