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

如何将网站从htdocs重定向到/web子目录且URL不显示/web

解决Apache虚拟主机下根目录重定向到子目录且隐藏URL路径的问题

问题场景

需要把部署在htdocs根目录的网站,实际请求转发到htdocs/web子目录,同时浏览器URL里不能显示/web后缀。当前用的是动态PHP CMS(无静态页面),且处于限制较多的虚拟主机环境,只能修改htdocs内的文件,没法改Apache主配置。

之前试了两种规则都有问题:

  • 第一种规则仅首页生效,访问子页面(比如About页)时URL会变成example.com/web/about,不符合预期
  • 第二种规则从首页跳转至子页面时能隐藏/web,但在子页面内刷新或跳转其他页面时,/web又会出现在URL里

正确的.htaccess配置

在htdocs/.htaccess里替换成以下规则:

RewriteEngine On

# 跳过真实存在的文件和目录(比如静态资源、已有目录,避免不必要的重写)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# 将根目录请求内部转发到web子目录,不暴露路径
RewriteRule ^(.*)$ web/$1 [L]

为什么之前的规则失效?

  1. 最初的规则用了绝对路径/web/$1,Apache会触发外部重定向,直接把URL改成带/web的地址,导致路径暴露
  2. 后续尝试的规则没有排除真实存在的文件/目录,当CMS在子页面生成内部链接时,会基于当前带/web的请求路径构造链接,刷新或跳转时就会再次显示/web

动态CMS额外注意事项

  • 务必在CMS后台把站点URL配置成https://example.com(不要加/web),确保CMS生成的内部链接都是基于根目录的
  • 如果页面里用了相对路径,建议在HTML的<head>标签里添加:<base href="https://example.com/">,强制所有相对链接以根目录为基准,避免带上/web后缀

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 12:02:20