我遇到了一个相当老的siye的问题。我有一些带有查询字符串的通用 URL,我想进行 301 重定向,但我不想笼统地重定向 URL。我想选择每个查询字符串的重定向位置,因为站点中有很多不同的类别。例如:
我想改变:
index.php?_a=viewCat&catId=199
至:
/garden-furniture/patio-furniture/garden-benches-garden-seats/cat_199.html
但是我不想将另一个 catid 更改为我选择的另一个 URL,完全不同的结构。我遇到的问题是我拥有的代码,如果我没有 ? 在目标网址的末尾,它可以工作,但是将查询字符串附加到末尾,如果我把它放在末尾,它根本不会重定向。
我正在使用的代码:
RewriteCond %{QUERY_STRING} ^_a=viewCat&catId=199
RewriteRule ^index\.php$ /garden-furniture/patio-furniture/garden-benches-garden-seats/cat_199.html? [L,R=301]
任何帮助,将不胜感激!
编辑:我的 htaccess 的其余部分
RewriteEngine On
RewriteRule ^conservatory/(.*)$ /conservatory-furniture/$1 [R=301,L]
RewriteRule ^dining-room/(.*)$ /dining-room-furniture/$1 [R=301,L]
RewriteRule ^garden/(.*)$ /garden-furniture/patio-furniture/$1 [R=301,L]
RewriteBase /
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule cat_([0-9]+)(\.[a-z]{3,4})?(.*)$ index.php?_a=viewCat&catId=$1&%1 [NC]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule prod_([0-9]+)(\.[a-z]{3,4})?$ index.php?_a=viewProd&productId=$1&%1 [NC]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule info_([0-9]+)(\.[a-z]{3,4})?$ index.php?_a=viewDoc&docId=$1&%1 [NC]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule tell_([0-9]+)(\.[a-z]{3,4})?$ index.php?_a=tellafriend&productId=$1&%1 [NC]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule _saleItems(\.[a-z]+)?(\?.*)?$ index.php?_a=viewCat&catId=saleItems&%1 [NC,L]