.htaccess - 一个特定域无法正常工作的SSL redicect条件

时间:2018-06-15 10:32:42

标签: apache .htaccess ssl redirect server

我有一个托管了多个网站的apache服务器:

main-website.com 
subdomain1.main-website.com    
subdomain2.main-website.com 
another-website1.com 
another-website2.com    
another-website3.com

我只需将https://www.main-website.com重定向到https://www.main-website.com

子域名和所有其他网站不需要ssl证书;因此,我想通过指定只需要重定向主网站来将它们从重定向中排除。

这是我的.htaccess语法(在这个topoic上进行了大量的研究似乎是正确的)

#NON-WWW to WWW (whis applies to all domains and subdomains)
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

#redirect HTTP to HTTPS only for main-website.com:
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} main-website.com [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

已指定重定向main-website.com的条件,但它不起作用!事实上,每个其他域和子域都被重定向到HTTPS !!

你知道错误的位置吗?

谢谢:)

2 个答案:

答案 0 :(得分:0)

您的问题中必定有拼写错误,您想要从http://ip-of-windows-server-2012:9090/重定向到https://www.main-website.com我会理所当然地想要https://www.main-website.com http://www.main-website.com

因此,您的第一个RewriteCond-RewriteRule集重写:

somesite.com   --->   https://www.somesite.com

但请注意,你也强制使用https。因此,任何到达https://www.main-website.com的尝试都将转到http://somesite.com

这个规则集可能是由您的其他域触发的。第一条规则应该是重写non wwwwww,而不是在此时强制使用https。

然后,下一个规则集将仅适用于您的主网站并将其发送到https。

答案 1 :(得分:0)

#NON-WWW to WWW (whis applies to all domains and subdomains)
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

#redirect HTTP to HTTPS only for main-website.com:
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} main-website.com [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

我更新了第一套说明。不过,它不起作用:(