Isapi Rewrite: from www to non-www and at the same time from http to https

997 views Asked by At

i have tried it all!

this:

RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule ^.*$ https://%1/$1 [R=301,L]

works only if i don't put the http at the beggining

how do make that to work: if there is http redirect to https if there is www redirect to non-www and ofcourse both on the same time

http://www.domain.com -> https://domain.com
www.domain.com --> https://domain.com
http://domain.com --> https://domain.com

with every subfolders after and query!

1

There are 1 answers

0
goodeye On

I assume you also want

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

Did you ever get this working? I'm having trouble getting a test https site going to double-check this.

In the meantime, I do see a couple things, so try this instead (this assumes isapi_rewrite v3, which it looks like you're using):

RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule ^(.*)$ https://%1$1 [NC,R=301]

This adds parentheses to the RewriteRule to capture the url for the $1.

Then the slash between the %1$1 isn't needed, since there's one at the start of the $1 capture.

I like to use NC for not case-sensitive, and the R rule is a final rule, so you don't need the L for last.

EDIT

I revisited this answer, to update/clarify a couple of secondary issues in my original answer above. These don't change the main solution above, which was to add the parentheses to do the capture.

Original:

Then the slash between the %1$1 isn't needed, since there's one at the start of the $1 capture.

This actually depends where the rules are, and whether there's a RewriteBase statement. Common shared-host configurations don't have the leading slash here in the rules, so the slash would be needed. If you're not sure, you can try with and without.

Original:

I like to use NC for not case-sensitive, and the R rule is a final rule, so you don't need the L for last.

It turns out it is useful to have L with R for performance, as [NC,R=301,L]. I had actually asked this at Helicon Tech a year before this question, but had forgetten it:
http://www.helicontech.com/forum/14826-Does_Redirect_need_Last.html
From their response:

... the reason for us to use [L] in 301 redirect rules is that redirect occurs not that immediately. Even though the rule is matched futher rules will be proccessed (run through), unless you have [L]....