You need to enable JavaScript to run this app. .htaccess配置301重定向:非www转www子页面失效及尾斜杠添加实现
优惠活动
大模型
产品
解决方案
定价
更多

.htaccess配置301重定向:非www转www子页面失效及尾斜杠添加实现

原配置核心问题
  • 路径拼接逻辑错误:原规则的跳转替换串为/$1/$1/,重复捕获两次请求路径,访问site.com/blog时实际会跳转到http://www.site.com/blog/blog/,和预期路径完全不符,这是子页面跳转失效的根本原因。主域看似能正常跳转,是因为根路径下$1捕获内容为空,双斜杠会被浏览器自动规范化为单斜杠,掩盖了拼接错误。
  • 协议不匹配:原规则强制使用http协议,不符合要求的https跳转目标。
  • 缺少循环保护:没有排除真实存在的文件请求,直接补斜杠容易触发无限重定向。
调整后的完整配置
RewriteEngine On

# 非www域名301跳转到带www的https对应路径
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1/ [R=301,L]

# 非文件类请求自动补全路径末尾斜杠
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1/ [R=301,L]
规则说明
  • 第一组规则:所有host头不带www.的请求,无论访问的是根路径还是任意层级子页面,都会跳转到同路径下的带www前缀的https地址,路径完全和原请求一致,不再重复拼接。
  • 第二组规则:
    • !-f判断:排除所有指向服务器真实存在文件的请求(比如静态资源、可执行脚本文件等),避免给文件类URL错误补斜杠。
    • !(.*)/$判断:匹配所有路径末尾没有斜杠的请求,自动跳转到带斜杠的对应地址。
    • 所有跳转使用R=301标记做永久重定向,搭配L标记确保规则执行完成后停止后续匹配,避免循环跳转。

注意:301跳转属于浏览器强缓存类型,调整规则后建议使用无痕窗口测试,避免旧的缓存规则干扰验证结果。

实际跳转效果验证
  • 访问example.com → 跳转至https://www.example.com/
  • 访问example.com/blog → 跳转至https://www.example.com/blog/
  • 访问www.example.com/js/app.js → 因是真实存在的文件,不触发补斜杠规则,正常返回资源
  • 访问www.example.com/about → 自动补斜杠跳转至https://www.example.com/about/

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.05 11:36:04