перенаправление с определенного запроса

#apache #.htaccess #mod-rewrite #redirect #rewrite

#apache #.htaccess #мод-перезапись #перенаправление #переписать

Вопрос:

У меня есть что-то вроде этого:

 RewriteCond %{QUERY_STRING} ^something=true$
RewriteRule ^$              http://www.a123dress.com/     [R=301,L]
  

Я хочу перенаправить ВСЕ (*) запросы, которые имеют «?something = true» на

http://www.a123dress.com/

Это работает для:

http://www.a123dress.com/?something=true

Я хочу переписать, например:

 http://www.a123dress.com/test/?something=true
  

Для:

 http://www.a123dress.com/test/
  

так что отрезать? что-то = true, как указано выше в первом примере

Ответ №1:

Ваше регулярное ^$ выражение просто позволяет перенаправлять домашнюю страницу / . Измените свое правило на:

 RewriteCond %{QUERY_STRING} ^something=true$ [NC]
RewriteRule ^ %{REQUEST_URI}? [R=301,L,NE]
  

Комментарии:

1. Спасибо! это работает! но почему там есть пробел? перед «%» ^ %{REQUEST_URI}?

2. 1, но нужно ли нам NE , поскольку мы все равно удаляем параметры? Просто спрашиваю, пытаюсь учиться. 🙂

3. Спасибо, да NE удобно, если в исходном URI есть какие-то специальные символы, такие как [ или ] и т. Д.