2016-04-03 107 views
0

目标:htaccess的重定向HTTP://域和http://www.domain到https://www.domain,不含特定子域

  • 重定向任何HTTP请求具有或不具有 WWW,至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.dom ain.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] 

任何想法为什么这不能完成我的目标?

回答

0

可以使用以下规则:

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 ==关闭)

  • 第二行排除在子域https redirectiom(host =!“admin.domain.com”)

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

+0

哇 - 太好了,谢谢。我会尽快测试并报告。非常感谢您的时间和详细的解释。 – oACGo

+0

好吧,所以我试了一下,结果导致https://www.subdomain.domain.com。所以,显然排除不起作用。可以托管配置导致这种并发症,或者是否存在指令的格式问题? – oACGo

+0

将** admin.domain.com **替换为第二个国家/地区中的** subdomain.domain.com ** – starkeen