How can I redirect my website to a non-www version and also make the non-www version the default version.

This is what I want:


And this is what is currently appearing on my site:


  • 1
    What web server do you using? Apache, nginx? Can you modify htaccess or nginx config? Commented Aug 28, 2017 at 13:39
  • What do you have in fields WordPress Address and Site Address on the Settings > General page in admin? Do those contain www?
    – Milo
    Commented Aug 28, 2017 at 16:56

1 Answer 1


This process can be broken into 2 steps:

Using .htaccess for Redirection

First, you should redirect any traffic from www to non-www version of your website, by using a simple rewrite rule:

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

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

This works for any website regardless of the domain, and covers both HTTP and HTTPS.

Defining the Canonical

If you are not using any SEO plugin, I suggest you add a line for search engines, to tell them which one of the protocols is the main. This can be done by using a code like this:

add_action( 'wp_head', 'add_my_canonical' );
function add_my_canonical(){
    echo '<link rel="canonical" href="'.site_url().'" />'
  • Just for Apache web server Commented Aug 28, 2017 at 13:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.