基于时间的重写 - 如何处理两个不同的年份?

时间:2011-12-23 01:30:25

标签: mod-rewrite

我需要重写以便页面:

http://www.site.com/page-one
http://www.site.com/page-two
http://www.site.com/page-three
http://www.site.com/page-four

仅在2011年12月25日至2012年1月31日期间提供

我怎样才能做到这一点?我一直在玩TIME_MON,TIME_DAY,TIME_YEAR,我对如何在2011年12月25日到2012年1月31日之间处理两个单独的月份,两个单独的年份感到困惑。

RewriteCond %{TIME_YEAR} ^2011
RewriteCond %{TIME_MON} ^12
RewriteCond %{TIME_DAY} >24
RewriteRule ^/page-one/?$ /folder/page-one [PT]
RewriteRule ^/page-two/?$ /folder/page-two [PT]
RewriteRule ^/page-three/?$ /folder/page-three [PT]
RewriteRule ^/page-four/?$ /folder/page-four [PT]

RewriteCond %{TIME_YEAR} ^2012
RewriteCond %{TIME_MON} ^01
RewriteCond %{TIME_DAY} >01
RewriteRule ^/page-one/?$ /folder/page-one [PT]
RewriteRule ^/page-two/?$ /folder/page-two [PT]
RewriteRule ^/page-three/?$ /folder/page-three [PT]
RewriteRule ^/page-four/?$ /folder/page-four [PT]

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

我认为这应该更具可读性,可扩展性,并且应该可以工作;)

顺便说一句:我看过的第一件事是格式: TIME_MON =>当月(0-11)

感谢this site here.

所以你的规则永远不会在12月工作;)

RewriteCond %{TIME_YEAR}/%{TIME_MON}/%{TIME_DAY} 2011/11/(25|26|27|28|29|30|31) [OR]
RewriteCond %{TIME_YEAR}/%{TIME_MON}/ 2012/0/
RewriteRule ^/page-(one|two|three)/?$ /folder/page-$1 [NC,QSA,PT]

... 3行代替14行;)

告诉我它是否有效。

如果它不起作用:阅读我通常的“两个提示”,并在你的问题中添加重写日志。

两个提示:

请尝试使用RewriteLog指令:它可以帮助您找出此类问题:

# Trace:
# (!) file gets big quickly, remove in prod environments:
RewriteLog "/web/logs/mywebsite.rewrite.log"
RewriteLogLevel 9
RewriteEngine On

我最喜欢检查regexp的工具:

http://www.quanetic.com/Regex(别忘了选择ereg(POSIX)而不是preg(PCRE)!)