Mod-Rewrite Question

时间:2009-08-28 20:21:22

标签: mod-rewrite

我想创建一个带分页的类别路径。网址将如下;

所有路径都应该使用或不使用尾部斜杠(如果可能)

/category/entertainment-and-music/

/category/entertainment-and-music/music/
     

(代表“音乐”类别“下   娱乐和音乐“)

/category/entertainment-and-music/5/
     

(代表第5页“ent。and   音乐“)

/category/entertainment-and-music/music/5/
     

(代表第5页“ent。and   音乐/音乐“)

我尝试了类似的东西但是没有用

RewriteRule ^category/(.*)/? /category.php?slug=$1&page=1
RewriteRule ^category/(.*)/(.*)/? /category.php?slug=$1&page=$2

我怎样才能做出像这样灵活的事情?

提前致谢...

2 个答案:

答案 0 :(得分:2)

RewriteRule ^category/([A-Za-z0-9_-]+)([/]?)$ /category.php?slug=$1&page=1
RewriteRule ^category/([A-Za-z0-9_-]+)/([0-9]+)([/]?)$ /category.php?slug=$1&page=$2
RewriteRule ^category/([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)/([0-9]+)([/]?)$ /category.php?slug=$1&subcat=$2&page=$3

第一条规则应涵盖仅指定类别的情况。

第二条规则应涵盖提供页面的类别。

第三条规则应涵盖类别,子类别和页面。关于你如何填充子类别,我并不是很清楚,所以我只是把它作为slug之后的另一个参数写出来。

所有这些都允许使用可选的尾部斜杠。

答案 1 :(得分:1)

看起来你的第一个正则表达式也会匹配你的第二个正则表达式。

/ category / slugname / 7 /将匹配。*,$ 1设置为“slugname / 7”

尝试这样的事情:

RewriteRule ^category/([^/]*)/? /category.php?slug=$1&page=1
RewriteRule ^category/([^/]*)/(.*)/? /category.php?slug=$1&page=$2

至少,或者稍微收紧你的比赛,如下:

RewriteRule ^category/([a-zA-Z0-9_-]+)/? /category.php?slug=$1&page=1
RewriteRule ^category/([a-zA-Z0-9_-]+)/([0-9]+)/? /category.php?slug=$1&page=$2

这会限制你的slu to至少是一个字母数字字符,允许“_”和“ - ”,你的页码也必须是数字。