2014-02-16 29 views
1

我需要友好的网址在我的网页上,并且我正在使用htaccess文件。 其实这很容易,但有一些网页可以有多个可选参数,没有特定的顺序,我无法想象这些页面的重写规则shpuld的样子。htaccess重写规则 - 多个可选参数没有特定的顺序

例如,从数据库中显示大量电影列表的页面。你可以过滤媒体(DVD,蓝光),年龄,流派。您可以按字母,评分等对结果进行排序,并且可以切换页面。所有这些与URL参数一起使用。

index.php?movies 

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

/movie 

没有问题为止。但它也可能是这样的:

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

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

参数没有特别的顺序,都是可选的。如果我重写规则将厕所这样

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

你怎么知道如果第一个参数是中等或页面或什么? 有没有一种方法来确定参数?

/movies/genre-3/page-15 

非常感谢!

+0

可以使用的URL是这样的:'/电影/媒体1 /风格/ 3年龄/ 17/sort/alphabet/page = 15'来支持URI中的多个参数。 – anubhava

+0

但是重写规则是什么样的? – havana

+0

确定发布我的答案在下面,看看这对你是否有用。 – anubhava

回答

0

您可以使用这样的规则:

RewriteEngine On 
RewriteBase/

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

这会重写URI像/movies/medium/1/genre/3&age/17/sort/alphabet/page/15到:
/?page=15&sort=alphabet&3&age=17&1=genre&movies=medium