HTTPS协议下www域名无法301重定向至指定主域名问题
解决HTTPS域名无法301重定向到目标域名的问题
我来帮你搞定这个重定向的坑!你遇到的问题核心是原来的规则只处理了HTTP(HTTPS=off)的请求,完全没覆盖HTTPS开启的情况,所以那些HTTPS开头的www域名和其他顶级域名自然跳不动。而且原来的规则把所有域名一条条列出来,不仅冗余,维护起来也麻烦。
优化后的简洁重定向规则
直接用正则匹配所有需要跳转的域名,不管HTTP还是HTTPS,只要不是目标域名example.de,就统一重定向:
RewriteEngine On # 匹配所有非目标域名的请求(不管HTTP/HTTPS) RewriteCond %{HTTP_HOST} !^example\.de$ [NC] # 执行301永久重定向 RewriteRule ^(.*)$ https://example.de/$1 [R=301,L]
规则解释
RewriteEngine On:开启URL重写引擎,这是重定向的基础前提RewriteCond %{HTTP_HOST} !^example\.de$ [NC]:匹配所有主机头不是example.de的请求,[NC]表示不区分大小写,避免因域名大小写差异导致的匹配失败RewriteRule ^(.*)$ https://example.de/$1 [R=301,L]:把请求的完整路径($1对应原请求的所有路径内容)重定向到目标域名,R=301是永久重定向,对SEO更友好,L表示这是最后一条规则,匹配后不再处理后续规则
为什么原来的规则不行?
你原来的规则开头加了RewriteCond %{HTTPS} =off,这就导致只有HTTP的请求会进入后续匹配逻辑,HTTPS的请求直接被跳过了——所以那些https://www.example.com这类域名根本不会触发重定向。你补充的那两条规则其实已经摸到了解决方向,但可以合并成上面更简洁的版本,不用分开处理HTTPS开启和关闭的情况。
内容的提问来源于stack exchange,提问作者tobias s
相关产品推荐
相关产品推荐

