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? – Anton Lukin Aug 28 '17 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 Aug 28 '17 at 16:56

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 – Anton Lukin Aug 28 '17 at 13:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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