htaccess mod_rewrite 特定 url 结构的表达式

htaccess mod_rewrite expression for specific url structure

我有这样一个 URL-结构:

mypage.com/search/f7_987_Aprilia/f8_1234_Aprilia+RS+125
mypage.com/search/f7_987_Aprilia
mypage.com/search/f8_1234_Aprilia+RS+125

而且我需要它们在内部(无需重定向)路由到以下结构:

mypage.com/search?&f[7]=987&f[8]=1234
mypage.com/search?&f[7]=987
mypage.com/search?&f[8]=1234

我已经走到这一步了:/(f\d+)(\d+).*/ 这为我提供了第一组所需的 ID。但是如何获取由斜线分隔的参数呢?我如何“转换”为所需的结构?

htaccess 可以吗?

我希望有天才可以想出所需的 mod_rewrite 正则表达式

提前致谢!

您可以在站点根目录 .htaccess 中使用此代码:

Options -MultiViews
RewriteEngine On

RewriteRule ^search/([a-z])(\d)_(\d+)_[^/]*/?$ search?&[]= [L,QSA,NC]

RewriteRule ^search/([a-z])(\d)_(\d+)_[^/]*/([a-z])(\d)_(\d+)_[^/]*/([a-z])(\d)_(\d+)_[^/]*/?$ search?&[]=&[]= [L,QSA,NC]