Redirect non-www to www in .htaccess

后端 未结 13 1673
轻奢々
轻奢々 2020-11-22 05:51

I have this in my .htaccess file:

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

but whenever I

相关标签:
13条回答
  • 2020-11-22 06:10

    I have tested all the above solutions but not working for me, i have tried to remove the http:// and won't redirect also removed the www it redirect well, so i get confused, specially i am running all my sites under https://

    So i have combined some codes together and came up with perfect solution for both http:// and https:// and www and non-www.

    # HTTPS forced
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
    # Redirect to www
    RewriteCond %{HTTP_HOST} !^www\.
    RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
    </IfModule>
    

    Hope this can help someone :)

    0 讨论(0)
  • 2020-11-22 06:11

    The following example works on both ssl and non-ssl and is much faster as you use just one rule to manage http and https

    RewriteEngine on
    
    
    RewriteCond %{HTTP_HOST} !^www\.
    RewriteCond %{HTTPS}s on(s)|offs()
    RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R]
    

    [Tested]

    This will redirect

    http

    • http://example.com

    to

    • http://www.example.com

    https

    • https://example.com

    to

    • https://www.example.com
    0 讨论(0)
  • 2020-11-22 06:15

    I believe the top answer successfully redirects non-www to www (ex: mysite.com -> www.mysite.com), but doesn't take into account wildcard subdomains, which results in:

    random.mysite.com -> www.random.mysite.com
    

    Here's a solution with/without HTTPS

    HTTP

    RewriteEngine On
    
    RewriteCond %{HTTP_HOST} !www.mysite.com$ [NC]
    RewriteRule ^(.*)$ http%{ENV:protossl}://www.mysite.com/$1 [L,R=301] 
    

    HTTP/HTTPS

    RewriteEngine On
    
    RewriteCond %{HTTPS} =on
    RewriteRule ^(.*)$ - [env=protocol:https]
    
    RewriteCond %{HTTPS} !=on
    RewriteRule ^(.*)$ - [env=protocol:http]
    
    RewriteCond %{HTTP_HOST} !www.mysite.com$ [NC]
    RewriteRule ^(.*)$ %{ENV:protocol}://www.mysite.com/$1 [L,R=301]
    

    *note: I haven't tested https because I don't currently have a cert to test, but if someone can verify or optimize what I have that would be awesome.

    0 讨论(0)
  • 2020-11-22 06:16

    Two warnings

    Avoid 301 and prefer modern 303 or 307 response status codes.

    Avoid 301

    Think carefully if you really need the permanent redirect indicated as [R=301] because if you decide to change it later, then the previous visitors of the page will continue to see the page of the original redirection.

    The permanent redirection information is frequently stored in the browser's cache and, in general, it is difficult to eliminate (reload the page do not solve the problem). Your website visitors will be stuck in the previous redirect "forever".

    Avoid 302 too

    The new version of the HTTP protocol (v1.1) added two new response status codes that can be used instead of 302.

    • 303 URL redirection but demanding to change the type of request to GET.
    • 307 URL Redirection but demanding to keep the type of request as initially sent.

    You can still use the code 302 (non-permanent redirection) although it is considered ambiguous. In any case, most browsers implement 302 in the same way the new 303 code instructs.

    0 讨论(0)
  • 2020-11-22 06:17
    RewriteEngine On
    
    RewriteCond %{HTTP_HOST} !^www\.
    
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
    

    For Https

    RewriteCond %{HTTPS}s ^on(s)|
    
    RewriteRule ^(.*)$ http%1://www.%{HTTP_HOST}/$1 [R=301,L]
    
    0 讨论(0)
  • 2020-11-22 06:20

    Add the following code in .htaccess file.

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

    URLs redirect tutorial can be found from here - Redirect non-www to www & HTTP to HTTPS using .htaccess file

    0 讨论(0)
提交回复
热议问题