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

如何通过.htaccess实现子文件夹默认用index.php并隐藏.php后缀?

解决方案

直接修改你的.htaccess代码,添加目录默认页的内部重写规则,并调整原有规则的条件,确保所有需求兼容:

RewriteEngine On
Options +FollowSymLinks

# 将带index.php的URL永久重定向到简洁版本
RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)index.php$ https://www.mydomain.com/$1 [R=301,L]

# 为目录自动添加结尾斜杠(可选,用于URL规范)
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*[^/])$ /$1/ [R=301,L]

# 当请求目录时,内部转发到该目录下的index.php
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)/$ $1/index.php [L]

# 移除URL中的.php后缀,仅当请求的路径不是文件或目录时生效
RewriteCond %{REQUEST_FILENAME}!-f
RewriteCond %{REQUEST_FILENAME}!-d
RewriteRule ^([^\.]+)$ $1.php [NC,L]

规则说明

  1. index.php重定向:保留原有逻辑,把mydomain.com/dashboard/index.php这类URL永久跳转到mydomain.com/dashboard/,避免重复内容并保持URL整洁。
  2. 目录补全斜杠:可选规则,确保所有目录请求都以/结尾,避免同一目录出现两种URL(带/和不带/)。
  3. 目录默认页转发:核心规则,当请求的是一个存在的目录(比如dashboard/),内部将请求转发到该目录下的index.php,主机无需设置默认主页,用户看到的URL依然是dashboard/。
  4. 移除.php后缀:在原有规则基础上添加!-d条件,确保当请求的是目录时不会触发这条规则,避免冲突;只有当请求的路径既不是文件也不是目录时,才自动添加.php后缀实现无后缀访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:53:32