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

如何编写.htaccess实现子目录无重定向指向父目录index.php?

实现子目录无重定向指向根index.php的.htaccess配置

嘿,这个需求很常见,尤其是做单页应用或者统一路由处理的时候,用Apache的mod_rewrite就能轻松搞定。下面是具体的配置步骤和代码:

前提确认

首先要确保你的Apache服务器已经启用了mod_rewrite模块——这是所有重写规则生效的基础。如果还没开启,你需要在服务器配置里启用它(比如在httpd.conf里去掉#LoadModule rewrite_module modules/mod_rewrite.so前面的注释)。

.htaccess配置代码

在/myDirectory/目录下创建(或修改).htaccess文件,写入以下内容:

RewriteEngine On
RewriteBase /myDirectory/

# 仅当请求的不是真实文件或目录时,转发到index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]

代码解释

让我拆解一下每一行的作用,方便你理解:

  • RewriteEngine On:开启URL重写引擎,没有这一行所有重写规则都不会生效
  • RewriteBase /myDirectory/:设置重写的基准路径,确保规则只在/myDirectory/目录下生效,避免和其他目录的规则冲突
  • RewriteCond %{REQUEST_FILENAME} !-f:检查当前请求的路径不是一个真实存在的文件(比如style.css、logo.png这类真实文件会被排除在外)
  • RewriteCond %{REQUEST_FILENAME} !-d:检查当前请求的路径不是一个真实存在的目录(比如/myDirectory/images这类真实目录会被排除在外)
  • RewriteRule ^ index.php [L]:如果上面两个条件都满足,就把所有请求转发到index.php处理;[L]表示这是最后一条规则,处理完就停止后续规则的执行

效果说明

配置完成后,当用户访问/myDirectory/ABC、/myDirectory/XYZ/123这类不存在的子目录或路径时,服务器会直接把请求交给/myDirectory/index.php处理,浏览器地址栏的URL不会发生变化(没有外部重定向)。而如果请求的是真实存在的文件或目录,规则会自动跳过,正常返回对应的资源。

内容的提问来源于stack exchange,提问作者James S.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:31:05