Url重写年,月,日

时间:2011-05-18 07:41:05

标签: php apache url-rewriting

我希望达到以下目的:http://example.com/year/month/day而不是http://example.com?year=yyyy&month=mm&day=dd

我希望它仅在匹配仅为数字,第一段(年)为4位数,第2段月份为01至12(月份的月份),最后一段(日期)时重写)是在01 - 31(一个月中的几天)之间。

请问我该如何实现这个目标

2 个答案:

答案 0 :(得分:3)

我认为检查脚本中的月份和日期编号。但这里是regexp。

更新为将单个数字日或月与可选的尾部斜杠匹配。

RewriteRule ^(\d{4})/(0?[1-9]|1[0-2])/(0?[1-9]|[12][0-9]|3[01])/?$ ?y=$1&m=$2&d=$3

仅适用于年份和月份,可选的尾部斜杠。

RewriteRule ^(\d{4})/(0?[1-9]|1[0-2])/?$ ?y=$1&m=$2

答案 1 :(得分:2)

我能想到的最好的是:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(\d{4})/(0[1-9]|10|11|12)/(0[1-9]|[12][0-9]|3[01])/?$  index.php?y=$1&m=$2&d=$3 [L]
相关问题