特定星期几的htaccess Rewrite规则失效排查与设置咨询
修复你的HTAccess周五/周六重定向规则
你的规则失效的核心问题在于TIME_WDAY的条件逻辑错误,同时你对TIME_WDAY的取值记忆确实有混淆,我来帮你梳理清楚并修正:
首先,Apache的%{TIME_WDAY}取值是固定的:
- 0 = 周日
- 1 = 周一
- 2 = 周二
- 3 = 周三
- 4 = 周四
- 5 = 周五
- 6 = 周六
你原来的规则里写了:
RewriteCond %{TIME_WDAY} >4 RewriteCond %{TIME_WDAY} <0
这两个条件是默认的AND关系(多个RewriteCond需要同时满足),意味着要求TIME_WDAY既要大于4,又要小于0——这完全不可能成立,所以没有任何请求会触发这个重定向,规则自然失效。
正确的配置方案
要实现仅周五(5)和周六(6)将/page/开头的请求重定向到/other-page/,可以这样写:
# 启用Rewrite引擎(如果文件开头没加的话) RewriteEngine On # 匹配请求路径以/page/开头的请求 RewriteCond %{REQUEST_URI} ^/page/ # 匹配周五(TIME_WDAY=5)或者周六(TIME_WDAY=6) RewriteCond %{TIME_WDAY} =5 [OR] RewriteCond %{TIME_WDAY} =6 # 重定向,提取/page/后的部分到$1,避免生成重复路径 RewriteRule ^page/(.*)$ http://%{HTTP_HOST}/other-page/$1 [NC,L,R=302]
关键优化点说明:
- 条件逻辑修正:用
[OR]标记让两个TIME_WDAY条件满足任意一个即可,完美匹配周五/周六的需求。 - RewriteRule正则优化:把
^(.*)$改成^page/(.*)$,这样$1会准确提取/page/之后的内容(比如/page/abc会重定向到/other-page/abc),避免出现/other-page/page/abc这种多余路径的问题。 - 添加R=302:明确是临时重定向,方便测试验证;如果确认规则稳定后,可以改成
R=301永久重定向。
额外检查项
如果配置后还是不生效,建议确认:
- 服务器已经启用了
mod_rewrite模块 - 网站根目录的
AllowOverride All已经在Apache主配置中设置(确保htaccess规则能被读取) - 清空浏览器缓存或者用隐私窗口测试(避免旧重定向缓存影响)
内容的提问来源于stack exchange,提问作者ultraloveninja
相关产品推荐
相关产品推荐

