简体   繁体   中英

Dynamic domain redirection to HTTPS and non-www

I have two domains at the moment: example.pl and example.com.

I'm trying to make sure they all go to https://example.pl or http://example.com respectively but I have a problem (or my browser also remembers old state).

I have this code at the moment:


RewriteCond %{ENV:HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^example.pl [NC]
RewriteRule ^ https://example.pl%{REQUEST_URI} [L,NE,R=301]

RewriteCond %{ENV:HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,NE,R=301]

But I'm not sure if it's working correctly ( http://example.com redirects somehow to https://example.pl ) and also whether this can be done in one block of code?

 RewriteCond %{HTTP_HOST} ^www\. [NC] RewriteCond %{HTTP_HOST} ^example.com [NC]

Both these conditions cannot be successful, so the rule will ultimately fail (do nothing) if requesting the www subdomain over HTTPS.

If it's just two domains then you need to modify the 3rd condition to allow an optional www subdomain and use regex alternation to match the two domains.

For example:

RewriteCond %{ENV:HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(example\.com|example\.pl) [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]

The %1 backreference matches the captured subpattern in the last matched RewriteCond directive, ie. either example.com or example.pl . The important point is that the 3rd condition is always successful, since the only purpose of this 3rd condition is to capture the domain name.

You will need to clear your browser cache since any (erroneous) 301 (permanent) redirects will have been cached by the browser.

But I'm not sure if it's working correctly ( http://example.com redirects somehow to https://example.pl ) and also whether this can be done in one block of code?

That's not possible with the rules you've posted. It's possible you are seeing a cached redirect from an earlier (erroneous) 301 permanent redirect.

See my earlier answer for an any domain solution.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM