Php 年、月和日的Url重写
我想实现这样的目标:而不是 我希望它只在匹配项为数字时重写,当第一段年份为4位否时,第二段月份在d年的01到12个月之间,最后一段日期在一个月的01到31天之间Php 年、月和日的Url重写,php,apache,url-rewriting,Php,Apache,Url Rewriting,我想实现这样的目标:而不是 我希望它只在匹配项为数字时重写,当第一段年份为4位否时,第二段月份在d年的01到12个月之间,最后一段日期在一个月的01到31天之间 请问我如何才能做到这一点我能想到的最好办法是: 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]
请问我如何才能做到这一点我能想到的最好办法是:
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]
我认为你应该在脚本中检查月和日的编号。但这里是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
仅适用于带有可选尾部斜杠的年份和月份
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
你应该检查你的脚本中的月数和日数。@ Tunff No,就像最后两个数字必须是EOL一样。它工作得很好,只是你可能需要考虑最后一个可选的前斜线:非常感谢,我注意到如果01被写为1,它就不起作用了,PLS我们如何修复它呢?此外,如果我只想使用年和月,我是否要删除“?:0[1-9]| 1[0-2]/”?@Ogugua Belonwu:更新的答案。非常感谢,我注意到如果01写为1,它不起作用,请我如何修复它;此外,如果我只想使用年和月,是否删除“0[1-9]| 10 | 11 | 12/”?