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

通过.htaccess将请求重定向到子目录并隐藏中间目录

解决共享主机上隐藏应用内部目录的.htaccess配置方案

当前你的配置能实现请求映射,但允许直接访问/myapp/public这类内部路径,调整.htaccess规则即可解决问题,同时满足你指定的URL处理需求。

修改后的myapp/.htaccess配置

RewriteEngine On

# 拦截直接访问敏感目录或public路径的请求,交由index.php处理
RewriteRule ^(public|private_config|private_uploads)(/.*)?$ public/index.php [QSA,L]

# 将所有合法请求映射到public目录对应的路径
RewriteRule ^(.*)$ public/$1 [L]

myapp/public/.htaccess保持原有配置不变

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]

规则说明

  • 第一条规则:匹配所有以public、private_config、private_uploads开头的请求,直接转发到public/index.php处理,彻底避免这些内部目录被直接访问,同时符合你要求的这类URL由index.php处理的需求。[QSA,L]参数用于保留原请求的查询字符串,并且终止后续规则的执行。
  • 第二条规则:把其他所有请求(比如/myapp/images/existing_file.png)映射到public目录下的对应路径(即public/images/existing_file.png),实现将public作为请求根目录的效果。
  • public/.htaccess的原有规则继续生效:当public目录下不存在请求的文件或目录时,自动转发到index.php处理。

验证效果

  • 以下URL会直接返回myapp/public目录下的对应文件/目录:
    • https://example.com/myapp/images/existing_file.png
    • https://example.com/myapp/images/
    • https://example.com/myapp/css/
  • 以下URL会交由myapp/public/index.php处理:
    • https://example.com/myapp/public/images/existing_file.png
    • https://example.com/myapp/images/does_not_exist.png
    • https://example.com/myapp/private_configs/secret.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 08:43:14