htaccess将http://域名和http://www.domain重定向到https://www.domain,不包括指定的子域名

时间:2016-04-03 01:07:12

标签: apache .htaccess redirect mod-rewrite https

目标:

  • 将带有或不带有 WWW的任何HTTP请求重定向到https_www.domain.com上的匹配页面除了包含subdomain.domain.com且不受影响的请求。

(我使用下划线代替://因为我的帖子被检测为垃圾邮件,否则)

示例:

  • http_domain.com> https_www.domain.com
  • http_domain.com *> https_www.domain.com *
  • http_www.domain.com> https_www.domain.com
  • http_www.domain.com *> https_www.domain.com \任何

  • http_subdomain.domain.com> http_subdomain.domain.com

  • http_subdomain.domain.com *> http_subdomain.domain.com *
  • https_subdomain.domain.com> http_subdomain.domain.com
  • https_subdomain.domain.com *> http_subdomain.domain.com *

我认为以下会这样做,但它不起作用:

//将对http_domain.com或http_www.domain.com的任何请求重定向到https_www.domain.com

//条件3应排除subdomain.domain.com受重写规则影响

rewriteengine on
rewritecond %{HTTPS} off
rewritecond %{HTTP_HOST} ^domain.com$
rewritecond %{HTTP_HOST} !^subdomain\.domain\.com$  [NC] 
rewriterule ^(.*)$ https://www.domain.com/$1 [R=301,L]

知道为什么不能实现我的目标吗?

1 个答案:

答案 0 :(得分:0)

您可以使用以下规则:

LOCAL_SRC_FILES
  • 第一行检查方案是否 http (https == off)

  • 第二行从https redirectiom中排除子域名(host =!" admin.domain.com")

  • 第三行与主机值 www.domain.com domain.com 匹配。并自动将www添加到非www,因此我们的%1总是包含 www.domain.com