如何通过.htaccess实现example.com各类URL重定向至http://example.com?
没问题,这两个重定向需求都可以通过.htaccess文件完美实现,而且完全契合你提到的SEO友好要求——统一域名格式和协议是避免重复内容、提升静态URL权重的关键操作。下面分需求给你具体的实现代码和说明:
需求1:将无协议的
example.com/path/file重定向至http://example.com/path/file 其实浏览器通常会自动为无协议的URL补全当前页面的协议,但如果是外部跳转过来的纯域名路径(比如example.com/path/file),我们可以通过规则强制统一为HTTP协议(如果需要HTTPS的话,只需要把代码里的http改成https即可)。
在你的.htaccess文件开头添加以下规则:
RewriteEngine On # 匹配指定路径的无协议请求 RewriteCond %{HTTP_HOST} ^example\.com$ RewriteCond %{REQUEST_URI} ^/path/file$ RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
如果你需要匹配
example.com下的所有路径(而不仅仅是/path/file),可以简化成通用规则:RewriteEngine On RewriteCond %{HTTP_HOST} ^example\.com$ RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]这里的
R=301是永久重定向,对SEO最友好——搜索引擎会把旧URL的权重完全转移到新URL上;L表示这是最后一条规则,匹配后不再执行后续规则。
需求2:统一所有域名前缀(含www)到
http://example.com/*(无论是否带路径) 这个需求是为了避免搜索引擎将www.example.com和example.com视为两个独立站点,造成内容重复。我们需要把所有带www的请求,以及任何非http://example.com的请求,都重定向到对应的http://example.com路径下。
在.htaccess中添加以下规则(如果已经开启了RewriteEngine On,就不需要重复写了):
# 开启重写引擎(如果之前没开的话) RewriteEngine On # 匹配www开头的域名请求(不区分大小写) RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] # 重定向到不带www的主域名,保留原路径 RewriteRule ^(.*)$ http://example.com/$1 [R=301,L] # (可选)如果有其他子域名(比如m.example.com)需要统一,取消下面两行注释 # RewriteCond %{HTTP_HOST} !^example\.com$ [NC] # RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
说明:
[NC]表示不区分大小写,比如WWW.Example.Com这类不规则输入也会被正确匹配;- 可选规则可以覆盖所有非
example.com的主机头请求,适合有多个子域名需要统一的场景;- 同样使用
R=301永久重定向,确保SEO权重的正确转移。
⚠️ 注意事项:
- 确保你的Apache服务器开启了
mod_rewrite模块(默认是开启的,如果没开需要联系主机商配置); - 修改
.htaccess后务必测试所有场景,比如访问www.example.com/path、example.com/path/file等,确认重定向是否正常; - 如果之后需要切换到HTTPS,只需要把代码中的
http://改成https://即可,规则逻辑完全不变。
内容的提问来源于stack exchange,提问作者Sejoo
相关产品推荐
相关产品推荐

