我有一个托管了多个网站的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 !!
你知道错误的位置吗?
谢谢:)
答案 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 www
到www
,而不是在此时强制使用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]
我更新了第一套说明。不过,它不起作用:(