.htaccess URLRewrite rule - 正则表达式

时间:2012-09-07 13:00:53

标签: regex .htaccess

我需要为我的网站重写规则。

我有以下类型的网址:

http://bag-saver.com/store/category/yellow-bags/?brand=TedBaker

但我希望如下:

http://bag-saver.com/store/category/yellow-bags-by-tedbaker/

我认为应该这样做:

RewriteRule ^-(.*) ?brand=$1

(它没有)

但是此外,?brand参数实际上可能显示为&parameter - 例如?word=clutch&brand=TedBaker

总结一下 - 我希望将品牌参数放入静态URL的最后部分,前面加上“by”。无论品牌参数在网址字符串中的哪个位置,我都希望这样做。

这是当前的.htaccess文件:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /


RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

以下是需要应用的所有网址:

http://bag-saver.com/store/category/black-bags/?brand=Jaeger
http://bag-saver.com/store/category/black-bags/?brand=Jaeger&word=Cross%20Body
http://bag-saver.com/store/category/black-bags/?word=Cross+Body&brand=Jaeger

以上需要转换为/ store / category / black-bags-by-jaeger /或/ store / category / black-bags-by-jaeger /?word = Cross%20Body(第2和第3选项)。

我也有这个: http://bag-saver.com/store/search/?brand=Jaeger需要转换为/ store / search / bags-by-jaeger /.

1 个答案:

答案 0 :(得分:1)

试试这个:(如果你能给我们所有的url变种,那就更好了)

RewriteRule ^(.*)-by-([^/]+)/(.*)$ /$1/$3?brand=$2 [L,QSA]