htaccess重定向http://domain和http://www.domain到https://www.domai



目标:

  • 将任何带有或不带有WWW的HTTP请求重定向到https_WWW.domain.com上的匹配页面,但包含子域.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_ww.domain.com/anything

  • 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]

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

您可以使用以下规则:

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !^admin.domain.com$
RewriteCond www.%{HTTP_HOST} ^(?:www.)?(www..+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [NE,L,R]
  • 第一行检查方案是否为http(https==off)

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

  • 第三行匹配主机值www.domain.comdomain.com并自动将www添加到非www中,因此我们的%1始终包含www.domain.com

相关内容

最新更新