简体   繁体   中英

htaccess : redirection all subdomain to main https www domain

i'm stuck using htaccess redirection, mixing some answers [1] [2] about htaccess redirection.

My goal is to redirect every subdomain (not www) to my main one ( starting with https://www . ), keeping the Request_URI (like specified folder) as it is.

Here is what i've done:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(.+)\.mydomain\.fr$ [NC]
# OR : RewriteCond .* ^(.+)\.%{HTTP_HOST}%{REQUEST_URI}$   [NC]

RewriteCond %{HTTP_HOST} !^www\.mydomain\.fr$  [NC]
RewriteRule ^ https://www.mydomain.fr%{REQUEST_URI} [L,R=301,QSA]

This config do redirect (strong text are bad redirection) :

Swapping RewriteCond %{HTTP_HOST} !^www\\.mydomain\\.fr$ [NC]

to

RewriteCond %{HTTP_HOST} !^https://www\\.mydomain\\.fr [NC] gave me an error of bad redirection. My thoughts was to check if the HTTP_HOST is in format https://www.mydomain , if not redirect to the good URL with REQUEST info RewriteRule ^ https://www.mydomain.fr/%{REQUEST_URI}

Why is there a bad redirection ? Do I have to write 2 set of Condition and Rule to check first the subdomain, then the HTTPS ? (I'm currently trying to make the redirection using one rule and several conditions, this may not be the best practice)

EDIT : My goal is to have these redirection:

Thanks in advance for any answers/ideas.

EDIT 2:

I've tried the Larzan answer on THIS question, and it seems to do what i want except one thing : If my URL in my browser is something like https://foobar.mydomain.fr , the browser shows me a big red warning about security, and i have to accept the risk, then the redirection is done to https://www.mydomain.fr . How can i removed this warning ?

#First rewrite any request to the wrong domain to use the correct one (here www.)
RewriteCond %{HTTP_HOST} !^www\.mydomain
RewriteRule ^(.*)$ https://www.mydomain.fr%{REQUEST_URI} [L,R=301]

#Now, rewrite to HTTPS:
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Replace both of your rules with this single rule:

RewriteEngine On

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\.mydomain\.fr$  [NC]
RewriteRule ^ https://www.mydomain.fr%{REQUEST_URI} [L,R=301,NE]

Test the change after completely clearing your browser cache.

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