【问题标题】:htaccess remove rule line after a specific timehtaccess 在特定时间后删除规则行
【发布时间】:2016-03-04 14:01:20
【问题描述】:

我想在生产日期后四小时后删除重写规则,例如:

RewriteCond %{REMOTE_ADDR} ^::1 #time of manufacture is 03:03-04-03-2016
RewriteRule ^test/test$ test/index.php [QSA,L]

所以我希望在03:07-04-03-2016 中删除该规则。

这可以通过 htaccess 本身完成还是我需要将其关联到 SQL 数据库?

【问题讨论】:

  • 可能能够使用RewriteCond %{TIME} 设置条件 - 请参阅:httpd.apache.org/docs/current/mod/mod_rewrite.htmlcodeinthehole.com/writing/…
  • 很好,但是在计时器完成后如何删除该行:(
  • 您可能必须手动完成;您实际上要做的是设置仅在接下来的 4 小时内有效的重写。之后它将停止工作 - 尽管它仍然在 .htaccess 文件中。
  • 或者我可以使用 PHP 和服务器玉米作业
  • 也许——尽管我不能 100% 确定您所说的“制造时间”是什么意思……是创建重写规则的时间吗?使用 cron 作业,您将以给定的时间间隔运行脚本,因此您可以每 10 分钟左右循环一次,并清理任何超过 4 小时的内容...

标签: php apache .htaccess mod-rewrite


【解决方案1】:

如果您正在创建重写规则并且只希望它在接下来的 4 小时内有效,您可以通过输入 YmdHis 时间戳来输入规则不到 4 小时的条件 now +4 小时并将其添加为条件:

RewriteCond %{REMOTE_ADDR} ^::1
RewriteCond %{TIME} <20160304161800
RewriteRule ^test/test$ test/index.php [QSA,L]

在这种情况下,RewriteRule 只会在 2016-03-04 16:18:00 之前触发,此后条件将不再有效并且将停止重定向。 p>

【讨论】:

  • 我认为 .htaccess 有不同的时间类型,这就是为什么它不工作我不能使用 php 的时间:(
  • 哦,是的,你是对的,它是Ymdhis 形式的时间戳 - 已更新
  • 但是如何将php“time()”转换成这个
  • 类似date('YmdHis', strtotime('+4 hours'))
  • 有线说它不起作用:O 我认为它与时区有关
猜你喜欢
  • 2013-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-16
  • 1970-01-01
  • 2012-05-07
  • 2021-09-12
  • 1970-01-01
相关资源
最近更新 更多