如何通过.htaccess仅在无参数时将index.php重定向至域名根目录?
解决方案:将无参数的index.php重定向至域名根目录
你需要在现有的URL重写规则之前添加一组规则,专门匹配没有任何查询参数的index.php请求,具体配置如下:
完整的.htaccess配置
# 重定向无参数的index.php到根目录 RewriteCond %{THE_REQUEST} \s/+index\.php\s [NC] RewriteRule ^ /? [R=301,L,NE] # 已有的产品URL重定向规则 RewriteCond %{THE_REQUEST} \s/+index\.php\?id=([^\s&]+) [NC] RewriteRule ^ /product/%1? [R=301,L,NE] RewriteRule ^product/([\w-]+)/?$ index.php?id=$1 [L,QSA,NC]
规则说明
RewriteCond %{THE_REQUEST} \s/+index\.php\s [NC]- 匹配实际的HTTP请求行,确保是直接请求
index.php且后面没有任何查询参数(\s对应请求行末尾的空白字符) - 使用
THE_REQUEST而非REQUEST_URI,是为了避免和内部重写后的请求冲突,防止出现循环重定向
- 匹配实际的HTTP请求行,确保是直接请求
RewriteRule ^ /? [R=301,L,NE]/?指向域名根目录,末尾的?用于移除原请求的查询参数(此处本来无参数,属于规范写法)R=301为永久重定向,测试阶段可改用R=302临时重定向,避免浏览器缓存干扰L表示执行完该规则后停止后续规则处理NE表示不对重定向URL中的特殊字符进行转义
注意事项
- 规则顺序优先级:必须把根目录重定向规则放在产品URL规则之前,否则会被后续规则拦截
- 测试前请清空浏览器缓存,301重定向会被浏览器持久缓存
- 确保服务器已开启
mod_rewrite模块
内容的提问来源于stack exchange,提问作者giulia9932
相关产品推荐
相关产品推荐

