过时内容提示(2018 年原文)
本文写于 2018 年,针对 Apache + 共享主机(Bluehost)场景。
.htaccess的mod_rewrite规则逻辑至今仍有效,但 Bluehost 面板界面已多次改版,操作路径可能不同。如果你的主机已迁移至 Nginx,此文不适用——Nginx 不读取.htaccess,重定向需写在server block里。阅读建议:规则语法可参考,操作截图以当前面板为准;Nginx 用户请查阅对应文档。
本篇主要讲Apache重定向redirects,通过配置.htaccess文件实现www重定向到非www(或非www到www),http强制跳转到https。
如果你只需要实现跳转功能不需明白原理,只看第二部分即可。
介绍
如何使用Apache服务器配置将站点从www重定向到非www(或非www到www)以及从HTTP重定向到HTTPS。为了更清楚,配置将重定向以下主机名:
http://example.com
http://www.example.com
https://example.com
至
https://example.com
如果更喜欢www,一个小的改动,将非www重定向到www版本。
配置Apache
将以下重定向规则添加到Apache配置文件,或在站点的根目录中新增一个.htaccess文件:
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]
如果你想实现全部跳转到www(www.example.com),则只需更改第三行加`!`和第五行加`www`,如下:
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [L,NE,R=301]
原理
如果你需要更加个性化的定制,有必要继续读下去,有助于实现你的需求。
RewriteEngine On
第一行启用执行重定向所需的Apache 重写引擎。如果已在同一文件中的先前配置中启用了,可以跳过这行。
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
这两行是重定向条件,它们用于确定是否应该重定向请求。因为条件与[OR]连接,如果这两个条件中的任何一个返回true,Apache将执行重写规则(重定向)。
第一个条件确定请求是否使用非HTTPS URL。第二个条件确定请求是否使用wwwURL。注意此处的使用www.和不使用www.,因为重写规则采用的是正则表达式,.点在这里有特殊含义,因此必须进行转义。
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
第四行是一个实用行,用来避免直接在URL中引用主机名。它匹配传入请求的HOST,并将其分解为www部分(如果有),以及主机名的其余部分。我们将与随后参考%1的RewriteRule。
如果事先知道主机名,则可以通过内联URL并跳过此条件来改进规则(参阅后面的内容)。
RewriteRule ^ https://www.%1%{REQUEST_URI} [L,NE,R=301]
这RewriteRule是重定向的核心。通过这一行,我们告诉Apache将任何请求重定向到新的URL,由以下组成:
- https://WWW
- %1:对主机的非www部分的调用
- %{REQUEST_URI}:请求的URI,没有主机名
所有这些参数都连接在一起,代表最终的重定向URI。最后,我们附加3个标记:
- NE 不要跳过特殊字符
- R=301 使用HTTP 301永久重定向状态
- L 停止处理其他规则,并立即重定向
备注
示例使用额外的RewriteCond行来提取主机名,并避免在规则中直接写主机名。如果觉得这对你来说是性能损失,可以直接在规则中写入主机:
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,NE,R=301]
结论
本文提供了一种简单的配置,可将www和非HTTPS请求重定向到规范站点域。这对于避免搜索引擎的内容重复问题非常有用。
网上搜索有几十种方法在Apache中执行重定向,这只是其中一种可能性,无法覆盖所有可能的情况。希望通过“原理”部分中的说明,可以根据需要对其进行自定义。
301 对 SEO 的常见影响(独立站视角)
- 正面:把分散的权重收敛到 单一规范 URL,降低 duplicate content 噪音。
- 风险:规则写错会产生 重定向链、循环 或把整站导到错误主机;改版时应维护 旧 URL → 新 URL 映射表并在 GSC 观察。
- 验证:抽样旧 URL、带参数的着陆页、以及 sitemap 中的地址,用
curl -I或线上重定向检查工具确认 单跳 到目标。
常见问题
问:用 302 可以吗?
答:永久性迁移请用 301/308;临时维护才用 302。
问:和 Nginx 配置冲突吗?
答:别在两层都写一套规则;以实际流量先经过的那一层为准。
问:需要上报 Search Console 吗?
答:大规模改 URL 时,应用「地址更改」工具或至少更新 sitemap 并监控抓取错误。
下一步
- WordPress/shared 主机场景:Bluehost SSL 与 htaccess。
- 迁移期全站 checklist:上线检查。
- 异常波动:排名排查。
[2026 技术实战提示] 在真实的商业环境中执行上述策略时,请始终以官方最新文档的 API 参数或界面变动为准。建议配合 GTM Preview 和 Google Search Console 进行实时验证。

评论
留言需人工审核后才会显示;回复会随主评论一起发布。评论按文章独立归档,请在你阅读的那篇文章下留言。 技术诊断请发邮件 sue@sufob.com或查看联系说明。