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

.htaccess适配动态目录:将非存在文件重定向到带参数的index.php

统一根目录.htaccess实现多子目录动态路径URL重写

问题背景

之前各子目录(如app、folder1)单独使用.htaccess实现URL重写,规则逻辑一致但需硬写RewriteBase路径。现在应用需部署到动态层级目录(如/aaa/bbb/app/),原有规则无法适配,需要用根目录单个.htaccess统一实现所有子目录的重写逻辑。

根目录.htaccess完整规则

RewriteEngine On

# 将旧的带index.php?view=的URL重定向为友好URL(301永久重定向)
RewriteCond %{THE_REQUEST} \s/([\w/]+)/index\.php\?view=([^&\s]+) [NC]
RewriteRule ^ /%1/%2? [R=301,L]

# 将友好URL反向重写回对应子目录的index.php?view=参数
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([\w/]+)/([^/]+)$ $1/index.php?view=$2 [L]

规则说明

  1. 重定向旧URL:

    • RewriteCond匹配包含/xxx/index.php?view=xxx的请求,其中([\w/]+)捕获任意层级的子目录路径(如app、aaa/bbb/app),([^&\s]+)捕获view参数的值。
    • RewriteRule将请求重定向为/子目录路径/参数值,并清除原有查询字符串(末尾的?)。
  2. 反向重写友好URL:

    • 两个RewriteCond确保请求的不是真实存在的文件或目录,避免影响静态资源访问。
    • RewriteRule匹配/子目录路径/参数值格式的请求,重写到对应子目录的index.php?view=参数值,[L]表示终止后续规则处理。

注意事项

  • 删除所有子目录(如app、folder1)下的.htaccess文件,避免与根目录规则冲突。
  • 确保服务器已开启mod_rewrite模块。

内容的提问来源于stack exchange,提问作者Lion Hummer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:46:05