Строка запроса Htaccess к другому

#.htaccess

#.htaccess

Вопрос:

У меня есть URL-адрес, подобный:

 shop/products.html?search_limiter=fullamp;keyword1=apple
  

Я хочу переписать этот URL на :

 index.php?route=product/searchamp;search=appleamp;description=true
  

использование apache .htaccess

Я пытаюсь :

 Redirect 301 /shop/products.html?search_limiter=fullamp;keyword1=apple     http://www.example.com/index.php?route=product/searchamp;search=appleamp;description=true
  

но это не сработало.

Есть ли какой-нибудь способ?

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

1. Redirect не будет достаточно гибким, чтобы сделать это хорошо; вы захотите mod_rewrite , но вам нужно будет использовать a RewriteCond для сопоставления в строке запроса в первую очередь: httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond

Ответ №1:

Чтобы перезаписать строку запроса, которую вы должны сначала использовать RewriteCond для сопоставления в строке запроса — затем вы можете использовать это в RewriteRule с совпадением %N типа.

Это позволит выполнить требуемую перезапись (с любым поисковым термином, а не только с «apple»):

 RewriteEngine On
RewriteCond %{REQUEST_URI} shop/products.html
RewriteCond %{QUERY_STRING} search_limiter=fullamp;keyword1=(w )
RewriteRule ^.*$ /index.php?route=product/searchamp;search=mp;description=true [NC,L,R=301]
  

Если вы не хотите фактически изменять URL-адрес в адресной строке, только загружаемый ресурс, оставьте R=301 (перенаправление http 301) из флагов.

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

1. Спасибо за помощь. Мои ключевые слова имеют символы utf8. Так что не переписывайте. Можете ли вы мне помочь в этом? example.com/shop /…

2. Просто используйте ([^? /] ) для utf8. Спасибо за помощь.

3. Я думаю w , что (любой символ «word») также должен работать… @Ussosan