#.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
, но вам нужно будет использовать aRewriteCond
для сопоставления в строке запроса в первую очередь: 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