微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.htaccess 使用 RewriteCond% {TIME} 重定向特定文件夹

如何解决.htaccess 使用 RewriteCond% {TIME} 重定向特定文件夹

我需要使用 .htaccess 文件设置基于时间的重定向

更具体地说,我想在时间条件发生时将特定文件夹(例如 test重定向到特定 URL,即当它是那个日期时。

因此,在日期之前可以毫无问题地导航文件夹,而当日期包含在条件中时,用户将被定向到 URL。

我试图使用 RewriteCond %{TIME} 重定向特定文件夹。 但是我无法让它工作。

RewriteEngine On
RewriteCond %{TIME} >=20211212100000
RewriteCond %{TIME} <20221216100000
RewriteCond %{REQUEST_URI}  ^/test           [NC]
RewriteRule ^$ https://example.com/page$.PHP [R=301,L]

是否可以将 test 文件重定向到传递该特定日期的 URL(例如 https://example.com/page.PHP)?一些建议?

解决方法

我假设这些指令位于根 .htaccess 文件中。

RewriteCond %{TIME} >=20211212100000
RewriteCond %{TIME} <20221216100000
RewriteCond %{REQUEST_URI}  ^/test           [NC]
RewriteRule ^$ https://example.com/page$.php [R=301,L]

RewriteRule 模式 ^$ 仅匹配对文档根目录的请求,因此在请求 /test 时不会处理任何条件。 (您不能请求 example.com/ example.com/test。)

您不需要 RewriteCond 指令 - 应在 RewriteRule 模式 中执行 URL 检查。

但是,您在 substitution 字符串中有一个错误的 $

此外,您需要使用 302(临时)重定向,而不是 301(永久)重定向。 301 重定向将被浏览器永久缓存,因此当时间段过去时,浏览器将继续重定向之前重定向的任何用户 - 从缓存中!

请尝试以下操作:

RewriteCond %{TIME} >=20211212100000
RewriteCond %{TIME} <20221216100000
RewriteRule ^test(/|$) https://example.com/page.php [R=302,L]

请注意,RewriteRule pattern 匹配的 URL 路径不以斜杠开头。正则表达式 ^test(/|$) 避免匹配根目录中仅以 test 开头的其他 URL。

(注意:我认为这些日期/时间仅用于测试?它们是未来的一年,涵盖超过 1 年的时间?!)

如果我将所有内容都放在专用文件夹中,它会起作用,但部分有效。也就是说,如果用户在 /page.php 页面上进行更新,则不会重定向。

在这种情况下应该将它们重定向到哪里?您的条件仅说明当用户请求 /test/<anything> 时,他们将被重定向到 /page.php(在该时间段内)。如果他们请求 /page.php 那么什么都不会发生。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。