我的网页上需要友好的网址,而我正在使用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
非常感谢!
答案 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