我想为新项目中的人们做准备,所以我想在给定日期之前访问一个登陆页面,然后必须将其重定向到整个网站。
在给定日期之前: 网站任何页面(甚至/)的每次调用都必须暂时重定向到/promo/index.php
在相同的给定日期之后: 每次对/ promo / *的调用都必须重定向到网站的根目录/
我从这样的第一条规则开始:
RewriteCond %{TIME} <20180705095200 [NC]
RewriteRule ^$ /promo/index.php [R=301,L]
=>在日期之前:它可以很好地将根/重定向到promo / index.php,但是如果我尝试/ Home,它不会重定向到promo
我也尝试过:
RewriteCond %{TIME} <20180705095200 [NC]
RewriteRule ^(.*)$ /promo/index.php [R=301,L] # LOOPS
=>在日期之前:显然,它会将每个URL重定向到/promo/index.php,但似乎也将/promo/index.php自身重定向到它自己(它向我抛出ERR_TOO_MANY_REDIRECTS)。
然后我尝试关闭所有其他规则以进行测试,并且循环继续抛出...
编辑2 *
感谢FoxyFish,我现在有以下代码:
RewriteCond %{REQUEST_URI} !/promo/index.php$
RewriteCond %{TIME} <19800705095200 [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\.(jpe?g?|gif|png|js|css|ttf|ico|json) [NC]
RewriteRule ^(.*)$ /promo/index.php [R=301,L]
RewriteCond %{TIME} >19800705095200 [NC]
RewriteRule /promo/index.php$ / [R=301,L]
但是“ After”效果(:p)不起作用... 我的意思是:在到期日期之后,/ promo / index.php不会重定向到/。仍然可以访问。
编辑3 *
这是我的最终解决方案
RewriteCond %{REQUEST_URI} !/promo/index.php$
RewriteCond %{TIME} <19800705095200 [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\.(jpe?g?|gif|png|js|css|ttf|ico|json) [NC]
RewriteRule ^(.*)$ /promo/index.php [R=301,L]
RewriteCond %{TIME} >19800705095200 [NC]
RewriteRule ^promo/index.php$ / [R=301,L,NC]
谢谢FoxyFish !!!!!!
PD:麻烦的是例如重写/ Countdown上的/promo/index.php。
答案 0 :(得分:2)
RewriteCond %{REQUEST_URI} !/promo/index.php$
RewriteCond %{TIME} <20180705095200 [NC]
RewriteRule ^(.*)$ /promo/index.php [R=301,L]
这应该防止促销页面本身被重定向重定向。
Edit1 *
为防止其他事情被重定向所需,只需使用以下条件...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\.(jpe?g?|gif|png|js|css|ttf|ico|json) [NC]
只需根据需要在列表中添加或删除扩展名即可。
Edit2 *
使用单独的条件/规则,该条件/规则将在促销到期后立即生效。
RewriteCond %{TIME} >20180705095200 [NC]
RewriteRule ^promo/index.php$ / [R=301,L,NC]