htaccess RewriteRule - 无特定顺序的多个可选参数

时间:2014-02-16 14:24:44

标签: .htaccess rewrite

我的网页上需要友好的网址,而我正在使用htaccess文件。 实际上它很简单,但是有些页面的url可以有多个可选参数,没有特定的顺序,我无法想象这些页面重写规则shpuld的样子。

例如,一个页面,用于显示数据库中的大量电影。您可以按媒体(DVD,蓝光),年龄,流派进行过滤。您可以按字母,评级等对结果进行排序,然后您可以切换页面。所有这些都与url参数一起使用。

index.php?movies

显示所有电影,没有过滤器,没有排序。重写的网址应该是这样的:

/movie

到目前为止没问题。但它也可能看起来像这样:

index.php?movies&medium=1&genre=3&age=17&sort=alphabet&page=15

这将返回DVD上所有R级恐怖电影的第15页,按名称排序。

参数没有特定的顺序,都是可选的。如果我的RewriteRule会像这样

RewriteRule ^movies/([0-9]+)/([0-9]+)/?$

你怎么知道第一个参数是中等还是页面还是其他什么? 有没有办法识别参数?

/movies/genre-3/page-15

非常感谢!

1 个答案:

答案 0 :(得分:0)

您可以使用以下规则:

RewriteEngine On
RewriteBase /

# reucrsion based rule to convert /n1/v1/n2/v2 to /?n2=v2&n1=v1
RewriteRule "([^/]+)/([^/]*)(/.*)?$" $3?$1=$2 [L,QSA]

这会将/movies/medium/1/genre/3&age/17/sort/alphabet/page/15之类的URI重写为:
/?page=15&sort=alphabet&3&age=17&1=genre&movies=medium