Windows 从每个组合重写到WWW和https

Windows 从每个组合重写到WWW和https,windows,https,isapi-rewrite,Windows,Https,Isapi Rewrite,我用的是helicon的isapi rewirte 我将此代码用于非www到www重写: RewriteCond %{HTTPS} (on)? RewriteCond %{HTTP:Host} ^(?!www\.)(.+)$ [NC] RewriteCond %{REQUEST_URI} (.+) RewriteRule .? http(?%1s)://www.%2%3 [R=301] 适用于非www到www部分。。。 如果它在http上,我需要它在www上被重定向到https Rewrite

我用的是helicon的isapi rewirte

我将此代码用于非www到www重写:

RewriteCond %{HTTPS} (on)?
RewriteCond %{HTTP:Host} ^(?!www\.)(.+)$ [NC]
RewriteCond %{REQUEST_URI} (.+)
RewriteRule .? http(?%1s)://www.%2%3 [R=301]
适用于非www到www部分。。。 如果它在http上,我需要它在www上被重定向到https

RewriteCond  %HTTPS (?!on).*
RewriteCond Host: (.*)
RewriteRule (.*) https\://$1$2 [I,RP, L]
我需要在这方面做什么改变才能使它工作

我明白了 整个领域都消失了

我尝试过其他方法,但效果不太好,就是这样:

RewriteCond %{HTTP:Host} ^(?!www\.)?(.*)$ [NC]
RewriteCond %{REQUEST_URI} (.+)
RewriteRule .? https://(?%1www.)%2 [R=301]
如果我尝试domain.com,我会得到。 如果我尝试www.domain.com,我会得到


这意味着我解决了一半的问题!但为什么url的其余部分不在那里

我的答案考虑了ISAPI_Rewirte版本3的答案。 因为主机值在%1中,而不是$1中,所以您得到了

我建议:

RewriteCond %{HTTPS} !on
RewriteCond Host: www\.(.*)
RewriteCond {REQUEST_URI} (.*)
RewriteRule .* https\://www.%1%2 [NC,R=301,L]