@nasvek

Редирект URL без изменения URL в адресной строке?

Добрый день, подскажите пожалуйста с одним вопросом, необходимо сделать серверный редирект без изменения URL в адресной строке, то есть, что я имею в виду

Сейчас отзывы открываются по адресу:
/index.php?dispatch=discussion.view&thread_id=1
И в адресной строке, точно такой же URL

Необходимо, чтобы запрашивался этот же URL, но в адресной строке браузера был совершенно другой вид:
/reviews/1

Для этого я прописал правило в .htaccess, но почему-то оно не работает, подскажите, что я сделал не так?
RewriteEngine on
RewriteBase /
RewriteRule ^/index\.php\?dispatch=discussion\.view&thread_id=([\d]+)$ /reviews/$1/? [L,R=301]
  • Вопрос задан
  • 303 просмотра
Решения вопроса 1
@dodo512
В RewriteRule попадает только путь к файлу index.php, а параметры dispatch=discussion.view&thread_id=1 следует искать в %{QUERY_STRING} или %{THE_REQUEST}.
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} (?:^|&)dispatch=discussion\.view(?:$|&)
RewriteCond %{QUERY_STRING} (?:^|&)thread_id=(\d+)(?:$|&)
RewriteRule ^index\.php$ /reviews/%1/? [R=301,L]

RewriteRule ^reviews/(\d+)/$  /index.php?dispatch=discussion.view&thread_id=$1 [L]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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