如何解决.htaccess 使用 RewriteCond% {TIME} 重定向特定文件夹
更具体地说,我想在时间条件发生时将特定文件夹(例如 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 举报,一经查实,本站将立刻删除。