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

如何通过.htaccess将所有URL内部Rewrite至/test/子目录?

URL内部重写问题解决方案

当前使用的.htaccess规则

RewriteEngine On
RewriteBase /
RewriteRule ^(index\.php)?$ /test/ [L]

这条规则仅匹配根目录或根目录下的index.php,所以只能处理localhost/的请求。

运行环境

MacBook Pro - XAMPP 8.1.2(安装版,非虚拟机)

需求与现状

  • 目标:实现URL内部重写(不修改地址栏),将所有请求指向/test/目录。
  • 已实现:输入localhost/时,可正常显示localhost/test/的内容。
  • 未解决:localhost/test2/这类子目录请求无法被重写为localhost/test/test2/。

解决方案

替换成以下.htaccess规则即可实现需求:

RewriteEngine On
RewriteBase /

# 排除真实存在的文件和目录,避免影响现有资源访问
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# 把所有请求重写到/test/目录,保留原请求路径
RewriteRule ^(.*)$ /test/$1 [L]

规则说明

  • RewriteCond %{REQUEST_FILENAME} !-f:仅当请求的不是真实存在的文件时,才执行后续重写
  • RewriteCond %{REQUEST_FILENAME} !-d:仅当请求的不是真实存在的目录时,才执行后续重写
  • RewriteRule ^(.*)$ /test/$1 [L]:捕获请求的完整路径,将其拼接在/test/后完成内部重写,[L]表示终止后续规则处理

修改后效果:

  • localhost/ → 内部重写为localhost/test/
  • localhost/test2/ → 内部重写为localhost/test/test2/
  • localhost/abc.html → 内部重写为localhost/test/abc.html

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 10:20:38