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

如何通过.htaccess将根目录指向子目录且不暴露文件夹路径

Flarum 根目录URL重写解决方案

问题原因

你当前的.htaccess规则中,根路径匹配逻辑会触发Apache的mod_dir模块自动跳转,导致URL暴露真实子目录路径。需要调整规则实现内部转发而非外部跳转。

修正后的根目录.htaccess配置

替换根目录下的.htaccess内容为以下规则:

RewriteEngine On

# 禁止直接访问flarum目录,提升安全性
RewriteRule ^flarum(/.*)?$ - [R=404,L]

# 将所有请求内部转发到flarum/public,不暴露URL路径
RewriteCond %{REQUEST_URI} !^/flarum/public/
RewriteRule ^(.*)$ /flarum/public/$1 [L]

关键说明

  • 第一条规则拦截对/flarum目录的直接访问,返回404,避免泄露应用结构。
  • 第二条规则是核心:只要请求未指向flarum/public,就将请求内部转发到对应路径,浏览器地址栏始终显示website.com开头,不会出现/flarum/public。

确认Flarum默认配置

保持flarum/public/.htaccess为Flarum默认配置即可,它负责处理应用内部的路由重写:

<IfModule mod_rewrite.c>
    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

额外检查项

  • 确保服务器已开启mod_rewrite模块。
  • 确认Apache站点配置中,public_html目录的AllowOverride设置为All,否则.htaccess规则无法生效。
  • 测试前清除浏览器缓存,避免旧的重定向缓存影响结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:20:25