整站重定向对子文件夹失效,如何实现正确重定向?
解决子文件夹页面的域名重定向问题
问题分析
- 原RewriteRule配置导致子文件夹页面重定向时带上服务器本地路径(如
/home/stakehol/public_html/),核心原因是$1在特定服务器配置下,可能捕获到文件系统路径而非客户端请求的URL路径。 - 使用
Redirect 301 / https://www.stakeholder-map.com/时,深层页面出现ERR_HTTP2_PROTOCOL_ERROR,是因为该指令会将请求路径与目标URL末尾的斜杠叠加,生成带双斜杠的无效URL,触发HTTP2协议解析错误。
正确配置方案
使用mod_rewrite并通过%{REQUEST_URI}直接获取客户端请求的完整URL路径,彻底避免本地路径干扰:
RewriteEngine On # 匹配旧域名(支持带/不带www前缀) RewriteCond %{HTTP_HOST} ^(www\.)?stakeholdermap\.com$ [NC] # 重定向到新域名,完整保留原始请求路径 RewriteRule ^ https://www.stakeholder-map.com%{REQUEST_URI} [L,R=301]
若网站根目录的.htaccess未设置RewriteBase,可补充该指令进一步确保匹配准确性:
RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^(www\.)?stakeholdermap\.com$ [NC] RewriteRule ^ https://www.stakeholder-map.com%{REQUEST_URI} [L,R=301]
验证步骤
- 修改
.htaccess后,必须清除浏览器缓存(301永久重定向规则会被浏览器长期缓存) - 测试子文件夹页面,确认重定向后的URL不包含服务器本地路径,且页面可正常访问
内容的提问来源于stack exchange,提问作者projectmonkey
相关产品推荐
相关产品推荐

