如何在mod_rewrite中创建数月和日的规则

时间:2016-10-04 03:14:55

标签: regex .htaccess date mod-rewrite

我正在使用mod_rewrite。我的部分规则是允许1到31天...... 显而易见的规则是:

(1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31)

同样的情况也会持续数月,范围从1到12

(1|2|3|4|5|6|7|8|9|10|11|12)

总的来说,我的规则看起来像是

RewriteRule ^gallery/image/date(?:/(1|2|3|4|5|6|7|8|9|10|11|12))?(?:/(1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31))?/?$ gallery/timeline.php?month=$1&day=$2 [L,QSA]

正如你所看到的,规则很难看!我相信这里有一个更好看的规则。 我已经尝试使用以下几个月了

([0-9]{1,2})

但是匹配一个或两个数字(0到99)。我需要一个匹配1到12个月和1到31天的规则吗?

如何创建这两条规则,数月和数天?

1 个答案:

答案 0 :(得分:1)

月份:

[1-9]|1[0-2]

以及几天:

[1-9]|[12][0-9]|3[01]

但是,这些会允许2/304/31这样的日期在实用性方面不存在!

RewriteRule ^gallery/image/date(?:/([1-9]|1[0-2]))?(?:/([1-9]|[12][0-9]|3[01]))?/?$ gallery/timeline.php?month=$1&day=$2 [L,QSA]