
本文详解如何在共享主机环境下,利用 Apache 的 mod_rewrite 模块,将形如 domain2.com/domain2.com/folder2 的冗余路径自动重写为简洁的 domain2.com/folder2,同时保持资源正常访问。
本文详解如何在共享主机环境下,利用 apache 的 mod_rewrite 模块,将形如 `domain2.com/domain2.com/folder2` 的冗余路径自动重写为简洁的 `domain2.com/folder2`,同时保持资源正常访问。
在共享主机(如 cPanel)中,当多个域名共用同一 public_html 根目录时,常见做法是将各站点文件分别放入子文件夹(如 public_html/domain2.com/)。但若未正确配置虚拟主机或文档根目录,访问 domain2.com/folder2 会因 Apache 默认从 public_html 开始解析而失败——实际需访问 domain2.com/domain2.com/folder2 才能命中文件。这不仅暴露内部结构,更破坏用户体验和 SEO 友好性。
要解决此问题,核心思路是:对 domain2.com 域名的所有请求,自动剥离开头的 /domain2.com/ 路径前缀,并将请求内部重写到对应子目录,同时对外隐藏该路径。这需在根目录 .htaccess 中添加精准的重写规则。
以下是优化后的完整 .htaccess 配置(兼容 PHP 5.6 + Apache):
将 WCAG 2 AA 无障碍标准应用于设计系统、UI 组件和网页——通过可运行的验证器进行对比度计算,采用设计 token 模式使颜色天生可访问,设定排版和焦点状态规则,并提供语义检查清单。适用于构建或审查 UI。
<ifmodule mod_rewrite.c>
RewriteEngine On
# 强制 HTTPS(保留原逻辑)
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA]
# domain1.com.ar:将请求重写至 /domain1.com.ar/ 子目录(保持原有逻辑)
RewriteCond %{HTTP_HOST} ^(www\.)?domain1\.com\.ar$ [NC]
RewriteCond %{REQUEST_URI} !^/domain1\.com\.ar/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /domain1.com.ar/$1 [L]
# domain2.com.ar:关键修复 —— 隐藏 /domain2.com/ 前缀
RewriteCond %{HTTP_HOST} ^(www\.)?domain2\.com\.ar$ [NC]
# 步骤1:外部重定向:将含 /domain2.com/ 的 URL 301 跳转为干净路径(SEO 友好)
RewriteCond %{THE_REQUEST} \s/domain2\.com\.ar/([^\s]*) [NC]
RewriteRule ^ /%1 [R=301,L,NE]
# 步骤2:内部重写:将干净路径(如 /folder2)映射到实际子目录
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /domain2.com.ar/$1 [L]
</ifmodule>
✅ 关键说明:
- RewriteCond %{THE_REQUEST} 规则用于捕获用户浏览器发起的原始请求(含完整路径),配合 R=301 实现外部跳转,确保地址栏显示 domain2.com/folder2 而非 domain2.com/domain2.com/folder2;
- 后续 RewriteRule ^(.*)$ /domain2.com.ar/$1 [L] 是内部重写,Apache 在服务器端将请求转发至真实路径,用户无感知;
- [NC] 表示忽略大小写,[NE] 防止 URL 编码,[L] 表示终止后续规则,避免冲突;
- 所有规则均置于
内,确保模块启用时才执行。
⚠️ 注意事项:
- 确保主机已启用 mod_rewrite 且 .htaccess 解析生效(cPanel 中检查“Apache 配置 > .htaccess 文件”设置);
- 修改后清除浏览器缓存,因 301 重定向会被缓存;
- 若 domain2.com.ar 子目录下存在 .htaccess,需确认其不覆盖根目录规则;
- 更优方案是联系主机商,将 domain2.com.ar 的文档根目录直接指向 public_html/domain2.com.ar/(cPanel 中可编辑附加域根目录),彻底规避路径嵌套问题。
通过以上配置,即可实现 URL 美化、路径隐藏与功能正常三者统一,显著提升站点专业性与可维护性。










