直接在服务端做路径重写是隐藏后端业务目录最有效的方式,通过apache .htaccess实现单向映射与强制隔离,将domain/pages/user.php重写为domain/user.php,并阻断原始路径访问。

直接在服务端做路径重写,是隐藏后端业务目录最有效的方式。它不靠前端遮掩,也不依赖代码逻辑改动,而是让真实路径对用户完全不可见、不可访问——既切断了路径枚举入口,也避免了敏感结构意外暴露。
用 Apache .htaccess 实现单向映射与强制隔离
这是最常用且稳定的做法,适合 PHP 项目将 /pages/、/api/ 或 /admin/ 等业务目录从 URL 中彻底剥离:
- 把 domain/pages/user.php 变成用户只认的 domain/user.php
- 同时确保访问 /pages/user.php 会被 301 重定向到新地址,或直接返回 404/403
- 所有请求仍由原文件执行,相对路径、表单提交、AJAX 请求均不受影响
关键配置要点(根目录 .htaccess)
以下规则需确保 Apache 已启用 mod_rewrite,且站点配置中 AllowOverride All 已开启:
-
第一步:外部跳转 —— 阻断原始路径直连
RewriteRule ^pages/(.+)$ /$1 [R=301,L] -
第二步:内部代理 —— 将干净路径映射回真实位置
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+\.php)$ /pages/$1 [END]
注意:[END] 比 [L] 更可靠,可防止多条规则叠加导致循环或冲突。
进阶防护:限制二级目录访问后缀
对于管理后台类路径(如 /admin),光隐藏还不够,可进一步加一层访问控制:
- 只允许 /admin.php、/admin.html 这类带明确后缀的请求通过
- 拒绝所有无后缀的 /admin 或带可疑扩展名(如 /admin.bak)的访问
- Nginx 示例:location ~ ^/admin\.(php|html|js|css)$ { ... },其余一律 return 403
反向代理作为替代方案
当后端服务运行在本地非标准端口(如 127.0.0.1:8080)时,可用反向代理完全解耦路径与服务:
- 对外暴露 /manage.secure,内部转发到 http://127.0.0.1:8080/
- 真实服务不监听公网,路径和端口全部隐藏,连扫描都找不到入口
- 配合自定义路径后缀(如 .secure),还能规避常见爬虫关键词匹配











