Trusted WordPress tutorials, when you need them most.
Beginner’s Guide to WordPress
WPB Cup
25 Million+
Websites using our plugins
16+
Years of WordPress experience
3000+
WordPress tutorials
by experts

How to Properly Move WordPress From Subdomain to Root Domain

Do you want to move a WordPress site from subdomain to root domain?

The process is fairly easy to follow, and there is a way to save your SEO rankings as well.

In this article, we will show you how to easily move WordPress from subdomain to root domain with step by step instructions.

Moving a WordPress site from subdomain to root domain

Transferring WordPress from Subdomain to Root Domain

A subdomain is an extension of your root domain name. For example, http://yourwebsite.example.com is a subdomain of example.com. In this case, example.com is the root domain.

Search engines consider the subdomain to be a totally different website. This is why you need to make sure that you properly redirect search engines to the root domain after the transfer. This will help you preserve search rankings after moving your website.

Unlike moving a WordPress site to a new host or a new domain name, moving a site to the root domain is a bit easier.

Primarily because both are usually hosted with the same web hosting company. This allows you to skip a few steps.

Let’s take a look at how to move a WordPress site from subdomain to root domain.

Step 1. Create a Complete Backup of Your Website

You should always keep a backup solution installed on your website for automated backups. There are plenty of WordPress backup plugins that you can use to keep your WordPress content safe.

Now, if you already have a backup plugin installed, then you may be thinking that you can skip this step.

This step is to remind you that even if you have automated backups of your website, you still need to create a complete backup of your site. This includes a database backup as well as a backup of all your WordPress files and folders.

Once you have created a complete backup, make sure that you store it on a remote location or on your computer.

Step 2. Moving Your WordPress Files From Subdomain to Root Folder

First, you need to connect to your website using an FTP client or cPanel’s file manager. Once connected, go to your subfolder location and download all your WordPress files to your computer.

Download WordPress files

Next, open the public_html folder of your root domain. Depending on how your WordPress hosting environment is set up, this folder could also be named www or after your domain name.

Now, you need to upload all WordPress files you downloaded earlier to the root directory.

Upload WordPress files to root domain

Step 3. Change WordPress URL and Site URL Settings

Once you move the WordPress files, you will not be able to access the WordPress admin area on the root domain. Trying to log in to the root website will send you back to the subdomain website’s admin area.

To fix this, switch to the FTP client and go to the root directory of your domain name. Next, you need to edit the wp-config.php file and add the following lines just before the line ‘That’s all, stop editing! Happy blogging’.

define('WP_HOME','http://example.com');
define('WP_SITEURL','http://example.com');

Don’t forget to replace example.com with your own domain name. If you want your root website to use www, then you will need to enter the URLs with www prefix.

Save your changes and upload the wp-config.php file back to your website.

You can now visit your WordPress site’s admin area on the root domain name.

Step 4. Update URLs

Your WordPress site has moved to the root domain, but there will be links inside your WordPress database pointing to the subdomain.

Let’s fix that.

You will need to install and activate the Search & Replace Everything plugin. For more details, see our step by step guide on how to install a WordPress plugin.

Upon activation, you need to visit the Tools » WP Search & Replace page from your WordPress admin panel.

At the top of the page, you need to enter your subdomain URL next to the ‘Search for’ field and add your root domain in the ‘Replace with’ field.

Add subdomain and root domain to search and replace fields

When you scroll down the page, you can choose to update URLs in specific tables within your WordPress database like your posts, comments, options, user data, terms, and other areas. Or, you can select all of the tables.

Next, hit the ‘Preview Search & Replace’ button.

Select all tables in Search & Replace Everything

The plugin will then show you a preview of all the changes it will make.

If everything looks okay, click on the ‘Replace All’ button to continue.

Preview changes and click Replace All

The plugin will now update all URLs in your WordPress database.

Step 5. Redirect All Subdomain Traffic to The Root Domain

Now that you have moved WordPress files, let’s make sure that your subdomain traffic is redirected to the root domain name.

Go to your subdomain folder and make sure that hidden files are forced to be visible.

Your FTP client settings have an option to always show hidden files. In FileZilla, it is located under the Server » Force Showing Hidden Files option.

Show hidden files

If you are using cPanel File Manager, then click on the ‘Settings’ button at the top right corner of the screen. This will bring up the preferences popup. You need to select ‘Show hidden files’ and then click on the ‘Save’ button.

Show hidden files in cPanel file manager

If your subdomain folder already has a .htaccess file, then you can delete it and create a new one. Inside the new .htaccess file, you need to copy and paste the following code:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^yoursubdomain\.example\.com$ [NC]
RewriteRule ^(.*)$ "http://example.com/$1" [R=301,L]
</IfModule>

Don’t forget to replace your subdomain with your actual subdomain, and example.com with your domain name.

Please note that the RewriteRule line uses a non-www URL. If you want to use www in your root domain, then you will need to add your URL with a www prefix.

Save your changes and upload your .htaccess file to the server.

That’s all. You have successfully moved your site from subdomain to root domain. You can now visit your website to see it in action. Test out your website to make sure that everything is working fine.

We hope this article helped you move your site from subdomain to root domain. You may also want to see our ultimate WordPress SEO guide for beginners, as well as our picks of the best 404 redirect plugins for WordPress.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

Disclosure: Our content is reader-supported. This means if you click on some of our links, then we may earn a commission. See how WPBeginner is funded, why it matters, and how you can support us. Here's our editorial process.

Editorial Staff

Editorial Staff at WPBeginner is a team of WordPress experts led by Syed Balkhi with over 16 years of experience in WordPress, Web Hosting, eCommerce, SEO, and Marketing. Started in 2009, WPBeginner is now the largest free WordPress resource site in the industry and is often referred to as the Wikipedia for WordPress.

The Ultimate WordPress Toolkit

Get FREE access to our toolkit - a collection of WordPress related products and resources that every professional should have!

Reader Interactions

68 CommentsLeave a Reply

  1. Olaf

    Many people try to perform migrations using various migration tools, and the results are often half-baked. This is a perfect guide on how to do it properly from A to Z. I’ve tried the Search and Replace plugin during a similar process, and it has since become a must-have utility in my toolkit. There aren’t many plugins like Search and Replace because this one does its job perfectly. I especially appreciate that it performs the change in two phases: first, it finds and displays the results, and then it asks if it should actually change the desired URL. This way, you can comfortably go through the entire list of what it found. Really great plugin for migration proces!

  2. kzain

    This is a comprehensive guide for migrating my WordPress site from a subdomain! Both the plugin and manual options provide valuable approaches. Feeling much more confident about tackling this migration now, especially with the reminder to back up the website first, Thanks!

  3. Raluca Laslo

    This post saved me hours of work. Every point in it worked exactly as advised. Thank you so much!

    • WPBeginner Support

      You’re welcome!

      Admin

  4. Jiří Vaněk

    Previously, I rewrote the URL using phpMyAdmin directly in the database, which was tedious for me. That’s why I was interested in the Go Live Update URLs plugin mentioned in the article. Thanks for the tip; according to the description, I feel that it will significantly speed up my migration work and I won’t have to make changes manually via the MySQL database. Great tip.

    • WPBeginner Support

      Glad it was helpful :)

      Admin

  5. Anna

    I’m moving from a subdomain to a new domain – can I follow this guide to do this?

  6. Heidary

    hello and thank you for this article
    i moved a website from subdomain to domain but the problem that i have is when i enter the subdomain url in the browser the website is being displayed but the url that is being displayed in the address bar is the subdomain , and when i click one of the links on the website then i am being redirected to main domain , please note there is nothing on the subdomain right now.
    i do have 301 redirect on the subdomain but something doesn’t seem to be working properly , any idea what could be causing this? any help or tip would be appreciated
    thank you in advance

    • WPBeginner Support

      If you’ve already done the step to update your URLs, we would recommend checking your Settings>general page to ensure the URL was updated correctly there.

      Admin

  7. Jesse Dill

    I am going through the steps and on step 3, I followed the php syntax but it caused some errors and I couldn’t get to any of the wordpress admin sites. I had to remove the pre tags and just use:

    define(‘WP_HOME’,’http://example.com’);
    define(‘WP_SITEURL’,’http://example.com’);

    After that it worked. Just in case anyone comes across the same issue as me.

    • WPBeginner Support

      Thank you for sharing that in case someone else runs into that issue!

      Admin

    • Valeri Andreev

      Thank you so much :)

  8. sarah

    Hi, Step two doesn’t seem to work for me as CPanel won’t let me download the directory sub.example.com

    I can download individual files but not folders or directories. I have tried compressing to .zip but the .zip file is empty.

    Can you please advise? Many thanks

  9. Jessica

    I see that Velvet Blues Update URLs plugin on wordpress.org is noted “This plugin hasn’t been tested with the latest 3 major releases of WordPress. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.”

    Do you recommend a different plugin now or to still use this one?

  10. Caleb Byers

    Do you need to update anything in the databases after doing the steps in the article? Whenever moving a site I’ve seen people say that there are a few steps in the databases, but not in this article… Is there a reason why?
    Thanks.

    • WPBeginner Support

      Step 4 handles that :)

      Admin

  11. Del Abernethy

    Worked a charm up until I tried to login to wp-admin. The site already had files (which I over-wrote) and users but now it won’t recognise the existing users. It does allow me to login using the username & password from the sub-domain so I’m assuming it is linked to the sub-domain database. Is it possible to link it to the existing original database?

    • WPBeginner Support

      You would want to check the wp-config file for the database it is connected to for your site and you would be able to change that in your file. That would normally happen if you didn’t overwrite the existing file if you were trying to replace a site with the one on the subdomain.

      Admin

  12. Peter Harrison

    Does this method update all the references in the database too?

    Regards
    Pete

    • WPBeginner Support

      It would depend on what references you are talking about. If you mean links in the articles then the velvet blues plugin updates those.

      Admin

  13. Mucha

    please advise on the steps for the htaccess. if my subdomain is /new what should it be on the new htaccess?

    • WPBeginner Support

      You would want to take a look at step 5 in the article for that information.

      Admin

  14. Kat

    I get a Web Application Firewall error whenever I implement phase 4. What could be the problem?

    • WPBeginner Support

      You would likely want to check with your hosting provider to ensure they don’t have a firewall and your SSL certificate is active as the most common reasons

      Admin

  15. Ben

    Hey – do you reccomend also using Googles change of address tool, to tell it subdomain.primarydomain.com is now primarydomain.com ?

    thanks

    • WPBeginner Support

      If you want you can also use that tool, the redirects would normally resolve this for you.

      Admin

  16. Sunita

    Thanku so much… it wouldn’t be possible without your help… thank you again!

    • WPBeginner Support

      You’re welcome :)

      Admin

  17. Sara

    Hi,
    I followed your steps up until the end of step 3, where I have edited the wp-config.php file
    I then go to the wp-admin. I enter my details and it just goes back to the same login. It’s not allowing me to login to the wordpress backend.
    It’s like it’s redirecting me.
    Are you able to help?
    I’d really appreciate it.
    Thanks,
    Sara

  18. Ghassen GaraAli

    Hello,

    Does this work to move a subdirectory to root ?

    thank you

    • WPBeginner Support

      Yes, you can follow our guide for that as well.

      Admin

  19. Sofia

    Hello, I did everything and it worked! But now I’m wondering, how do I keep my subdomain as a “staging” website, so that I can change things and not affect the one on the domain. I’d have to make a new database (using a backup) right?
    How to assure I don’t do anything wrong?

  20. Oliver

    In my subdomain folder, I have 2 .htaccess files. One is in subdomains/example, the other is in subdomains/example/web. The latter is next to all the other wordpress files. Which one should I delete and replace with the code in step 5?

    • WPBeginner Support

      You may need to check with your host but from the sound of it, you would modify the second one.

      Admin

  21. Aldo Salim

    Hi, thank you so much for the great help.

    However, i do not want to keep the old sub-directory folder. Will it be okay to delete the sub-directory folder?

    • WPBeginner Support

      As long as you’ve moved all of the files you can remove the sub-directory folder

      Admin

  22. Joshua Orizu

    I am building a websites and the domain name is displaying site.comp50 instead of site.com how do i fix this

    • WPBeginner Support

      You may want to check with your hosting provider to ensure the correct domain is attached to where your site is and then you would be able to update the url in your Settings>General area

      Admin

  23. Jeremy

    What happens to the blog posts on the root domain during a migration?

    I currently built a redesigned site on a subdomain, Sandbox.WebsiteName.com, and want to migrate it over to the the root domain. However, I want to keep the blog posts.

    i’m worried about the seo. Do the blog post from the root domain get overwritten? If not how would i access them to redirect them?

    Thanks,

  24. Madison

    Hi,

    Would this method work if I wanted to move a subdomain, which a friend uses, ie, xxx.example.com, over to their new account so it can be its own website like xxx.com?

    If not, is there anything that would work at all or would they just have to start over, thus losing all the comments, page views, etc?

  25. jeff

    velvet blues didn’t work for me, but another url replacement plugin did (better search replace)

    • WPBeginner Support

      Thanks for sharing the plugin that worked for you :)

      Admin

  26. Rui

    Hi,
    This tutorial is great, but didn’t work for me. I don’t know why.

    I can access to admin area, in homepage the images are not shown and when i tried to access posts and products says “Not Found
    The requested URL /shop/index.php was not found on this server.”

    I would like some help if possible.
    Thank you a lot

    • WPBeginner Support

      You may want to ensure steps 3 and 4 were completed for the most common reason for that.

      Admin

    • Canonical Bear

      Hi,
      We had the same problem (my team and I). Only the Home Page would open, and all other pages were broken.
      You need to update the permalinks. Go to Dashboard ->Settings -> Permalinks. Here, don’t make any changes, just click on “Save Changes”.
      It re-apply settings with the current directory as root.
      All the best.

      • John

        CANONICAL BEAR, you deserve two kisses for this comment. No, make that three! Worked superbly.

  27. Milan

    Hello WP Team,

    just one quick question… what is the difference between this procedure and clone website from cpanel installatron (godaddy). Can I use clone for same purpose? Do I need to made some additional changes after cloning. It’s looks much easier to do this with clone option.

    Thanks for good work!

  28. Melind

    This worked like a charm! The part that takes the longest is uploading and downloading the files. Thank you!

  29. smv

    This didn’t work for me at all. Step 4, using the Velvet Blues plug-in to update the URLs, didn’t update most of them. There were still loads of references to the old site. I had to re-do everything, but I used the duplicator plug-in, which worked well.

  30. Gábor Sztárcsevics

    Hi!

    Is this modification will change the records in the database, which is used for my wordpress on the subdomain.example.com?

    Shouldn’t I create a new database for the migrated wordpress?

    Thank you!

    • WPBeginner Support

      Hi Gábor Sztárcsevics,

      Since you are moving from subdomain to root domain on the same hosting environment, your old database would work just fine after you update URLs as shown in the tutorial.

      However, if you would like to create a new database, then you can do that as well. You will then need to export your data from the old database to the new one and update URLs.

      Admin

  31. Shravan

    RewriteCond %{HTTP_HOST} ^yoursubdomain\.example\.com$

    in this code, do i need to remove those 2 backward slash’s

  32. Denise

    I don’t see where you remove the old wordpress files. Are they automatically replaced when you upload the subdomain files to the root?
    Thank you.

    • WPBeginner Support

      Hi Denise,

      IF your root site already has a WordPress installation, then you need to overwrite those files.

      Admin

  33. Charlotte Jones

    I tried this and got a HTTP 500 error. Luckily I backed everything up, but I don’t understand. All the files are there in public_html and I changed the wp-config file to point to the root domain.

  34. Jon

    Very good thank you. Went like a dream apart from an error I made by amending the old subdomain .htaccess file instead of the new one in the root. Your advice was excellent tho.

  35. Juan F.

    Hi guys,

    After doing all the steps, if I want to save a page I get an error and automatically redirects me to the post list, could you help me please?

    Thanks in advance.

    • Anita

      Hello!
      If I make the site in the exemple.com/Wordpress folder, do I have to move it to the example.com folder or can I just redirect it, how does that work?
      /Anita

  36. Ousman Faal

    This was definitely useful. I was just about to change a demo site on a sub domain to a root domain.
    You guys are live savers.

  37. Kumaar Dev Sharma

    this is very helpful to me….very nice post

Leave A Reply

Thanks for choosing to leave a comment. Please keep in mind that all comments are moderated according to our comment policy, and your email address will NOT be published. Please Do NOT use keywords in the name field. Let's have a personal and meaningful conversation.