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

如何用.htaccess实现伪目录重写,隐藏路径并限制服务器访问(非永久)

解决方案:Apache .htaccess 内部重写与访问控制

以下是完全符合你需求的根目录.htaccess配置,逐条解释规则逻辑:

# 开启重写引擎
RewriteEngine On
# 禁止目录列表,防止泄露服务器文件结构
Options -Indexes

# 1. 禁止直接访问真实目录(阻止用户绕过伪目录访问真实路径)
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+mech-platform-web/ [NC]
RewriteRule ^ - [F,L]

# 2. 禁止访问所有非伪目录的请求(确保只能通过/mech-platform/入口访问)
RewriteCond %{REQUEST_URI} !^/mech-platform/ [NC]
RewriteRule ^ - [F,L]

# 3. 内部重写伪目录到真实目录,保留子路径与查询参数
# 匹配带子路径的伪目录请求(如/mech-platform/page/1)
RewriteRule ^mech-platform/(.*)$ mech-platform-web/frontend/web/$1 [L,QSA]
# 匹配伪目录根路径(如/mech-platform 或 /mech-platform/)
RewriteRule ^mech-platform/?$ mech-platform-web/frontend/web/ [L,QSA]

规则说明

  • URL保持不变:所有规则使用[L]终止后续规则而非[R]重定向,属于Apache内部转发,浏览器地址栏始终显示伪目录路径;QSAQuery String Append确保所有查询参数如?id=100完整传递到真实目录。
  • 严格访问控制:
    • 第一条禁止规则通过匹配THE_REQUEST用户原始请求行阻止直接访问真实目录,内部转发不会触发此条件;
    • 第二条规则拦截所有非伪目录的请求,直接返回403 Forbidden,彻底禁止访问服务器上其他任何内容。
  • 非永久无缓存:无任何301/302重定向标记,浏览器不会缓存重写规则;删除.htaccess后,伪目录本身不存在,Apache会返回404 Not Found。

前置要求

  1. 确保Apache已启用mod_rewrite模块:
    • Debian/Ubuntu系统执行:a2enmod rewrite,然后重启Apache
    • CentOS/RHEL系统修改httpd.conf,确保LoadModule rewrite_module modules/mod_rewrite.so未被注释,重启Apache
  2. 确保虚拟主机/全局配置中允许.htaccess生效:
    <Directory "/path/to/your/htdocs">
        AllowOverride All
        Require all granted
    </Directory>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 01:37:42