使用Apache RewriteRule和RewriteCond将备用内容设置为特定日期

时间:2013-04-17 09:56:01

标签: apache mod-rewrite osx-server

我需要在特定日期之前提供正在建设的页面,但是我会在新内容需要显示的那天出国,并且在一周半后(我知道,第一个世界问题。 ..)

我目前在httpd-vhosts.conf文件中为under_construction页面提供服务。

RewriteRule ^(.*)$ \
http://localhost:8080/VirtualHostBase/\
http/%{SERVER_NAME}:80/under_construction/VirtualHostRoot$1 [L,P]

我想使用的是下面的内容,但我不完全了解它应该如何工作,当然它没有正常工作,因为它没有正确配置。我已经尝试更改时间字符串以使其在重新启动后几分钟更改,但配置可能不适合开始。

RewriteRule ^(.*)$ \
RewriteCond ^{TIME} < 201304220000
http://localhost:8080/VirtualHostBase/\
http/%{SERVER_NAME}:80/under_construction/VirtualHostRoot$1 [L,P]

RewriteRule ^(.*)$ \
RewriteCond ^{TIME} > 201304220000
http://localhost:8080/VirtualHostBase/\
http/%{SERVER_NAME}:80/content/VirtualHostRoot$1 [L,P]

我至少走在正确的轨道上吗?另外,除了localhost:80 / server-status之外,还有什么办法可以从Terminal看到Apache的状态(日期,时间等)吗?任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:3)

比较运算符与CondPattern

之间不允许有空格
RewriteCond %{TIME} <20130422000000
RewriteRule ^(.*)$ \
http://localhost:8080/VirtualHostBase/\
http/%{SERVER_NAME}:80/under_construction/VirtualHostRoot$1 [L,P]

RewriteCond %{TIME} >=20130422000000
RewriteRule ^(.*)$ \
http://localhost:8080/VirtualHostBase/\
http/%{SERVER_NAME}:80/content/VirtualHostRoot$1 [L,P]

另外,请不要忘记使用>=<=,具体取决于您是要在当天还是后一天开启。

答案 1 :(得分:0)

您需要RewriteCond 之前应用它的规则:

RewriteCond %{TIME} < 20130422000000
RewriteRule ^(.*)$ http://localhost:8080/VirtualHostBase/\
http/%{SERVER_NAME}:80/under_construction/VirtualHostRoot$1 [L,P]

RewriteCond %{TIME} > 20130422000000
RewriteRule ^(.*)$ http://localhost:8080/VirtualHostBase/\
http/%{SERVER_NAME}:80/content/VirtualHostRoot$1 [L,P]

%{TIME}变量是4位数年份,2位数月份,2位数日期,2位数小时,2位数分钟和2位数秒。