You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求协助:.htaccess实现带查询字符串的目录到文件重定向

解决OpenSpeedLite下.htaccess目录重定向问题

问题分析

原规则存在几个核心问题导致失效:

  • 多RewriteCond需同时满足才触发规则,但原URL缺少proc和etime参数,直接跳过规则执行
  • RewriteRule匹配模式错误:.htaccess放在/subdir下,RewriteBase /subdir/生效后,匹配路径是相对于/subdir的部分,原请求路径为/(即subdir/),模式不应包含/subdir/
  • 手动拼接查询字符串易出错,且无需重复捕获参数,QSA标志可自动保留原查询串

正确的.htaccess规则

将以下内容替换原规则,保存到/subdir/.htaccess中:

RewriteEngine On
RewriteBase /subdir/

# 确保查询字符串包含task、pid、lang参数(可按需调整参数检查)
RewriteCond %{QUERY_STRING} (^|&)task=[^&]+(&|$)
RewriteCond %{QUERY_STRING} (^|&)pid=[^&]+(&|$)
RewriteCond %{QUERY_STRING} (^|&)lang=[^&]+(&|$)
# 匹配/subdir/目录请求
RewriteRule ^$ myfile.php [L,QSA]

规则说明

  • RewriteCond部分:检查查询字符串中是否存在指定参数,适配参数在开头、中间或结尾的情况
  • RewriteRule ^$ myfile.php:匹配/subdir/的目录请求(相对于subdir的路径为空),重定向到同目录下的myfile.php
  • [L,QSA]:L表示终止后续规则执行,QSA自动将原查询字符串追加到目标URL后,无需手动拼接

简化版(无需严格检查参数)

如果只要是/subdir/?xxx格式的请求都需重定向,可使用更简洁的规则:

RewriteEngine On
RewriteBase /subdir/

RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{QUERY_STRING} .+
RewriteRule ^$ myfile.php [L,QSA]

逻辑:若请求为真实目录(/subdir/)且查询字符串非空,直接重定向到myfile.php并保留原查询串

内容的提问来源于stack exchange,提问作者Brian Tracy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 20:37:29