The other day, Klint Finley wrote a very good walkthrough of using the new Multisite functionality of WordPress 3.0. In the comments, a lot of people wanted to know how to use your own domain names. Since I’m doing that now, here’s a quick walkthrough/how-to guide.

Step 1: Manual Plugin Installation

The Domain Mapping plugin is not your regular kind of plugin. You cannot install it through the normal Plugins->Add New menu. Well, actually, you can, it just won’t work.

So first, download the plugin manually.

Note: For this tutorial, I will be using the WordPress MU Domain Mapping plugin. However, I am using the trunk version of the plugin. It has fixes in it that you will need for proper 3.0 support. Don’t try it with the regular version. (Note: The regular version works fine. This was originally written before the latest version, or 3.0, was released.)

The plugin has two main files you need to put in the proper places.

Domain mapping php file location

The first file is the domain_mapping.php file. This needs to go into the mu-plugins folder. The mu-plugins folder is a special folder, which you may not even have yet. Just create it underneath the wp-content folder and put that file into it.

Sunrise php file location

The second file is the sunrise.php file. This is a special filename for WordPress. Don’t worry about it, just put it in the wp-content folder.

Step 2: Activate Sunrise

Now you need to edit your wp-config.php file. Add this line of code to it:

define( 'SUNRISE', 'on' );

Simple, really. This will cause WordPress to go load that sunrise.php file and use it.

Step 3: Server info

Now you have to configure the domain mapping plugin so that it knows what it’s doing properly. This is easy to do, really. Go to your main domain’s admin page and log in as a super admin. Then go to the new Super Admin->Domain Mapping menu.

Domain mapping setup screen

Here you have a few different options, but two main ones that count. You can either put in the IP address of your server (as defined in your domain’s main A record) or you can put in a CNAME that points to your server. The IP address is what most people will want to use. If your server uses more than one, you can enter them all here, separated by commas.

Other options on this page:

  • Remote Login – This will make your login pages for all sites redirect to your main site to do the actual login. The benefit of this is that when you log in to one, you log into all of them. The downside is that the URL changes to another domain in order to log in.
  • Permanent redirect (better for your blogger’s pagerank) – This makes your subdomain or subdirectory sites redirect to their domains. You should leave this on.
  • User domain mapping page – Turn this on if you want users to be able to put in their own domains for mapping.
  • Redirect administration pages to blog’s original domain (remote login disabled if redirect disabled) – This makes all admin pages show up on the original domain instead of on the new domains. You need this enabled for remote login to work.

Generally I leave only the middle two on. Remote-login is iffy at best, and I want my new domain name to show up everywhere.

Step 4: Mapping the Domain

There’s a bit of a prerequisite here before you do this. When you buy a new domain, you will need to edit its DNS settings to actually point to your server IP or CNAME or whatever you do to make the domain connect to your server. For me, I just give it a new A record with my server IP in it. Easy.

Update: Okay, so there may be more to it than just that, depending on your host. Every host is different, and you’ll have to talk to your host to make them able to point the domain name at your existing site. How to do this varies from host to host, but the important thing is that when you visit your new domain (before you do this!) then you want it to go to your main site, as is.

There’s two ways you can actually map a domain to one of your sites. The user screen is the simplest way, if you left that option on before. Log into the site you actually want to map to a new domain, then go to Tools->Domain Mapping.

User Domain Mapping Screen

All you really do is put in a new domain and set it as the primary. Simple.

Note that if you didn’t get the domain pointed at your server before doing this, then your site will instantly vanish from the realm of mortal man. Setting the primary domain takes effect instantly. You won’t be able to access the site through the old domain any more.

The other way to set domain mapping is through the Super Admin->Domains menu. Here you’ll find a list of sites and their ID numbers. You can map an id number directly to a domain name here. The Tools approach is a bit easier to use, but this will allow you to map domains without visiting them, as you can access this list from your main domain. You can also correct broken domain mappings from here.

Step 5: Seeing the Mapped Domains

If you go to Super Admin->Sites, you’ll find this type of a listing:

Sites listing

You’ll note that on the right hand side you can see the column showing the mapped domains.

Special Note: See in the picture how I’m using a subdirectory install? That’s relatively new. In older versions of the domain mapping system, you had to use a subdomain installation and wildcard DNS for domain mapping to work. This is no longer the case, domain mapping works just fine with subdirectories.

Conclusion

And that’s how it’s done. It’s not super complex, but it does require some knowledge of DNS and how servers work. If you can successfully set up a multi-site install to begin with, you can probably do this as well. Just be aware that it is slightly finicky, and know that you will break your site if you put in the wrong settings somewhere. However, your main domain will always be accessible as long as you don’t try to map it, so you’ll be able to go in from there to correct your mistakes.

Shortlink:

1,194 Comments

  1. For some reason “Domain Mapping” is not showing up under my Tools menu. Everything was installed per the instructions. Any help?

  2. apologies if this was already answered – i tired to see if anyone had the same situation, but didn’t find anything relevant.

    my issue deals with domain mapping and it may be a host problem

    godaddy vps – all domains and corresponding dns all pointing to the same ip – set up as separate accounts
    wp 3 multisite set up under a.com – working fine

    b.com set up as a child site in wp.
    when i log into the dashboard of a.com/b and attempt to map the primary domain to b.com, it maps correctly.
    however, attempting to visit b.com sends me to the public_html folder of the vps account for b.com (essentially the apache test page)
    so, the domain name is mapping properly, but it is pointing to the wrong file location, correct?

    any suggestions on how to fix this? much appreciated.

    • Before you do any mapping, you need to work with your host to make sure that the domains in question all point to the primary domain, not to a separate hosting account.

      In other words, a.com and b.com should both go to the same place before you map anything in WordPress. The plugin is what later separates them out into the separate sites, but to do that, the domain needs to send you to the WP site in the first place.

      • thanks. i actually figured it out.
        in case anyone else hits this issue:

        you only create an account on your vps for the primary domain where you will install wp.
        for all your child blog domain names, you change the a record in the registrar to the ip address of your server (i had actually set them up as hosting accounts on my vps, this is where i went wrong).
        additionally, if you have other static sites on the same ip, your child blogs may end up pointing to one of these sites instead of mapping correctly to the wp install. i have multiple ip addresses on my vps, so i dedicated one address to wp only and then set all my other static sites to another ip.
        everything works great now.

        • My reqs. sound similar to yours cs. Have a vps. When you note that you dedicate one IP address to wp only is that from within wp? Need to install on my vps. Have had problems with vp install on localhost when setting up SuperAdmin. Would like to do this all locally before installing on vps.

          • Followed all the directions above and get “Domain Mapping Disabled. You must create a network for it to work” in WP dashboard. SuperAdmin does not show up on my localhost. I have all files where they should be and referenced..
            Restarted xampp and relogged in and get same result..

          • multisite will work just fine on your localhost and you don’t have to mess with any ip addresses. however, you won’t be able to map any domains locally (unless you are running your own dns). you could develop on your localhost, transfer to your vps, and then map domains to the child sites after.
            i had several non-wp sites hosted on the same ip on my vps and it was interfering with the domain mapping in wp. that’s why i put all my static sites on one ip and my wp install on a different one.

        • @CS Where did you set up your “b” domain? Did you do it in the godaddy domain manager or in the simple control panel DNS? What did you specify as the nameserver? I’ve tried using a namerserver that I have setup to go to that IP but it is giving me a GoDaddy hold page, which is different than the Apache page you were getting (and I was getting before deleting it as you did).

          Any help you can give would be greatly appreciated!

          Thanks,
          Keeks

          • Make sure you setup the domain in your hosting account too. Simply pointing the IP at it isn’t enough.

          • I thought CS said that you can’t set it up on the server because it sets up a domain structure and then it points to the Apache setup page. I had it that way and I had the same problems he had.

            I have a DNS option on my server but I’m not sure what to point that at… The namerserver I set up that points at that domain? Or do I need to do something special to point it to the right spot?

          • I figured it out. If anyone else is using VPS with GoDaddy, they will be zero help but here is some additional info. Like CS said, don’t put it in the Domain section but you do need to put it in the DNS section of the Simple Control Panel. Then copy the information for A and NS from the master domain you set up for your multisite. Set it up there and in the Domain Manager>Set Nameserver on your godaddy account. Then after beating your head against the wall it will finally work.

            Thanks Otto and CS for your help!

      • Here I have a doubt.

        If I have a multi site on maindomain.com If my user want to map his blog he.maindomain.com with he.com .He would need to point to numeric IP which I specify or cname record. Then later he goes to domain mapping page in the site.

        Then I should point his newly added domain he.com to my wordpress installation from my Cpanel “addon ” domain ‘s option.It happens only If he contact me or If I look at the newly added domains under my super Admin page.

        But It is some what risky 🙂 .I w’d like to enable my users to get their domain mapped instantly and start to work 🙂 So I need not recieve intimation from them and need not point the addon from my cpanel .(I have shared hosting account )

        How can I do it?

        • Could you tell me If I can do it ? So a user with he.maindomain.com just need to point the domain from thier cpanel and later set his domain at domain mapping page at blog.
          They need not contact me and It starts working instantly.
          Could you tell me If it is the downside of shared hosting?

  3. BS….i’m having the same issue. Followed the instructions exactly…. whats up?

    Paul

  4. […] WordPress 3.0: Multisite Domain Mapping Tutorial. As an extension of the excellent walk through of the multisite functionality of WordPress 3.0 by our very own Klint Finley, Otto has put together a domain mapping tutorial that is receiving rave reviews. Follow the steps to map multiple domain blogs from within the same WordPress 3.0 install. […]

  5. […] WordPress 3.0: Multisite Domain Mapping Tutorial […]

  6. […] Dacă dorești să treci o rețea de bloguri WordPress cu instalări separate în WordPress MU ai un tutorial complet și ușor de urmărit – How to Move Multiple WordPress Subdomain Blogs to a Single WordPress 3 Multi Site Blog. Și, după ce ai finalizat transferul pe subdomenii, poate vei dori să adaugi fiecărui subdomeniu un domeniu. Pentru asta ai un tutorial realizat de unul dintre developerii principali WordPress – WordPress 3.0: Multisite Domain Mapping Tutorial. […]

  7. Hey, sorry to be a pedant, but you might want to update the post – you’re using the term “Top level domain” incorrectly: http://en.wikipedia.org/wiki/Top-level_domain

  8. […] 3.0 Multisite Domain Mapping Tutorial from Otto June 21st 2010 in Weblog Tools Collection WordPress 3.0: Multisite Domain Mapping Tutorial. As an extension of the excellent walk through of the multisite functionality of WordPress 3.0 by […]

  9. Does anyone know if it’s possible to configure WP 3.0 Multisites on a local server (MAMP) using SUBDOMAINS? If so, how so?

    • Not possible to use subdomains on local server, unless somebody figured out some hack for that. Haven´t seen any so far. But it would be useful!

      • I now have multisites working with SUB-DOMAINS on a local server. MAMP Pro solved the problem: you can set up domain ‘aliases’ with MAMP Pro, and while I it doesn’t seem to allow a single wildcard sub-domain (*), you can simply set an aliases for each sub-domain you need. It takes around 2.45 seconds to do that, and it works, so MAMP Pro is well worth the $59 price [IMO].

        * it might well be possible to configure a single wildcard sub-domain through the config files, but that’s beyond my knowledge. If anyone wants to share that info, I’m all ears.

  10. I think I’ve done most things correctly, as I have been able to add a child site to my WP3.0 network and access posts and the wp-admin panel as if they were on the domain. However, when I try go to the domain directly, it just shows a holding page from CPanel.

    What might I be doing wrong?

  11. Sorry, I am trying to get this installed but the result is not what I expected. I do not want subdomains, but that’s what I got. Is there a way to have the multisite set up so I can have xxx.com, yyy.com, zzz.com…not
    site.example.com, test.example.com?

    I am a bit confused as to whether or not Multisite can accomplish this.

    Thanks for your feedback.

    • Multisite, by itself, doesn’t handle domains like that. That’s what this article is about.

      But, after you setup multisite and have your subdomains working, this guide tells you how to use the domain mapping plugin to change those subdomains into your other domains.

  12. Sir,
    I am trying to test domain mapping .But the domains I set are still redirecting to main site’s sign up page.I think I am missing some thing.
    I have made a screen cast of my domain mapping configuration.Could you please help me with this.
    Thank you !
    Screen cast’s URL http://unrelo.com/domainerror

    • Lot going on there.

      Here’s the thing. Make sure that your “primary” domain is what you want to show up in the address bar for the site in question. Then, make sure that that domain, via a wildcard or via a direct entry, will shown the main site. I think that’s where your disconnect is.

      • Sir ! I did everything as you mentioned .But I doubt that I am missing something other than this.

        Thank you !

        • I tried this with a new wordpress multi site installation.It worked well for me when I try to mask the domain like test.mydomain.com with mask.mydomain.com .But it is not working If I am trying to mask any domain other than this main domain of installation.
          If I try to use domain2.com to mask test.mydomain.com .It’s going to signup page.
          Am I missing some thing?
          Thank you !

  13. The only way I got this working was by manually creating vhost configs in my apache sites-enabled and sites-available directories.

    I’m unclear if this is a requirement or a brute-force method …?

  14. […] it wasn’t THAT easy… but mainly thanks to this article and some tweaking on Dreamhost (I know…), I figured things out… and here it is: […]

  15. […] mehrere Blogs beherbergen. Das ist etwas stärkerer Tobak, aber es scheint zu klappen dank einiger guter Artikel im […]

  16. i ant use Multisite Domain Mapping. Can i use your tuto with this : http://www.ovh.com/fr/produits/superplan_best_of.xml ?
    Thx.

  17. […] In WordPress 3.0How to Setup Multisite in WordPress 3.0?How to Enable Multisite in WordPress 3.0WordPress 3.0: Multisite Domain Mapping TutorialWordPress 3.0 Walkthrough: Getting Started with MultisiteUpgrading WordPress MU 2.9.2 to WordPress […]

  18. […] WordPress 3.0: Multisite Domain Mapping Tutorial Leave a comment | Trackback No comments yet. […]

  19. I installed the plugin, but I am not seeing the domain mapping option in my main site or the sub site super admin. I do see the plug-in as a Drop-in under plug-ins and it says:

    sunrise.php

    Executed before Multisite is loaded.

  20. Hi Otto

    Thanks for your tutorial!

    But i have any problem such as many people on the comments. I can’t login on the new site wp-admin

    When i put the username and password on the new dashboard, i got again the login screen, nothing happens. If i put any bad username or password i get the incorrect password message, but with the correct username and password i go back to the login page and nothing happens.

    I can see that many people on the comments have the same problem but i can see how the people resolve it. Do you have any idear? TGhanks!

  21. […] “The Domain Mapping plugin is not your regular kind of plugin. You cannot install it through the normal Plugins->Add New menu. Well, actually, you can, it just won’t work…”check it out […]

  22. @Otto,
    I am using subdirectory install and have some plugins running across the whole network. After mapping, how the plugins work on the mapped child blog?

    • Doesn’t change a thing. The plugins will still be there and still working. Mapping a domain doesn’t make it a new site, it just gives it a new URL.

      • I see. So, all the traffic and files are still on the host where my parent site is hosted? My concern is to offload some RAM/CPU usage to another account on the same host. Is there a way to achieve this? Thanks!

        • Right. The point of multisite is to run everything off of one place. If you want to offload to another account, you’re going to have to set up another complete installation on that account. It won’t be shared.

  23. Hi Otto

    Thanks for your tutorial!

    But i have any problem such as many people on the comments. I can’t login on the new site wp-admin

    When i put the username and password on the new dashboard, i got again the login screen, nothing happens. If i put any bad username or password i get the incorrect password message, but with the correct username and password i go back to the login page and nothing happens.

    I can see that many people on the comments have the same problem but i can see how the people resolve it. Do you have any idear? TGhanks!

  24. Hi Otto,

    I used your tutorial, to map 1 blog of my multiblog system WP (installed with subdirectorie) to a subdomain, only this one blog.
    At the moment, this blog is in the subdirectory http://my-domain.de/blog/ and I have an existing subdomain called http://blog/my-domain.de/. Now I would like to call this one blog with the address of this subdomain. So I installed the plugin as you said above and set these settings:

    1. at my hoster, I gave the CNAME of my subdomain http://blog/my-domain.de/ this CNAME: blog.my-domain.de.
    Then I waited, until at the hoster the status of this changes is “ready”.

    2. Then I put the sunrise.php and the mu-plugin-folder in wp-content

    3. put the sunrise-code into wp-config.php

    4. Superadmin -> Domain Mapping Configuration
    There I set the “Server CNAME domain” to this: blog.my-domain.de
    Is this right, without http?

    5. I go to the admin area of this blog -> Tools -> Domain Mapping:
    Add domain blog.my-domain.de and set as primary.

    The result is, that my blog cannot be called by this subdomain:
    http://blog.my-domain.de/; it shows the error “server not found”.
    The old adress with subdirectory http://my-domain.de/blog/ shows “server not found”, too.

    What can I do now?

    Thanks in advance.

  25. Is it possible the map the domain of the main site? I have everything installed, but the reason I was trying this is because I want to map http://www.productionsite.edu to http://www.ourdevserver.edu. our production server doesn’t support wordpress, so it needs to live elsewhere but look like it lives on the production server, and I thought this would be a solution, but I can’t figure it out.

    • No, the “main site” is not mappable. Only sub-sites are mappable.

      If you’re wanting to map the main site, then all you really need to do is to point the domain at it then change the URL settings as per normal. This is not a multi-site specific thing. Domain names can be pointed anywhere.

  26. Thanks, Otto, now I have discovered, why I had the “server not found” error. Your tutorial works totally fine, as long as each subdomain at the hoster points to the folder, where WordPress is installed. That was my fault: the subdomain points to the server root, but WordPress is installed in a subfolder at the server. I changed this, and now all works fine.
    Thanks for that great tutorial and your help!

  27. I have a question…if you set up this multi-site mapping, won’t all of your WP sites then look like they are all originating from the same IP (the IP of the SuperAdmin account)?

  28. @ Linda

    The IP, that you use, if only the IP of the server (!), where your wordpress is installed.
    Pointing all your subdomains to the folder at the server, where your wordpress is installed in.
    The plugin is the only thing, that makes the “redirecting”, the mapping – you need not to redirect anything by htaccess or redirection plugins.
    The only important thing, I discovered for me, is, that all subdomains at the server must point to the folder at the server, where you have installed your wordpress.

    • Thank you Chris, I think I understand…the multiple sites aren’t being served from their subdomains; the subdomains just act as a sort of pointer. Sound right?

      • Yes, Linda, my English is not so good, but I think, you can say it so … the subdomains all point to the WordPress installation folder, no subdirectory, nothing else, and point for this – only made by the plugin! – in a certain sense to the subfolders of each blog.

  29. thank you for the information,
    This was helped,

  30. If somebody speaks or understand German, I have here written a step-by-step tutorial, that completes Otto’s tutorial, with informations how to set up your subdirectories and the server settings at the example of an 1&1 server and its specials, and what you need to pay attention to:

    Tutorial for Domain Mapping in German

  31. thank you for the information,
    This was helped,
    spirit! ! ! ! !

  32. Do I still have to install plugins on the child blogs? I thought I could use the plugins of the parent on all of the children.
    I also still do not see the “Tools > Domain Mapping” on the child blog after mapping it.

    • Plugins are installed across the entire network, but can be activated on a per-site basis. There’s also a Network Activate which activates a plugin on all the sites.

      I think the new menu in Tools will only be there if you turn on the “User domain mapping page”.

  33. Is it possible to clone a site of the network?

  34. I have “User Domain Mapping” turned on but dont know why its not appearing in the child blog.

  35. I have 2 sites mapped and I am able to get to both of them through the parent site. But I cannot activate plugins on the child sites since I dont see any there. How do I use the plugins across the network? They are all “Network Activated”. Unless this has something to do with the Domain Mapping option not appearing in the child sites Tools menu. I cant figure that part out and am too frustrated to keep trying.

  36. Am i just supposed to have a domain pointed to my DNS servers with nothing else installed on it? The sites I mapped, I installed WordPress with Fantastico before I mapped them.

    • Right, there’s your problem.

      The point of multisite is that you can run as many “sites” you want off of just one WordPress installation. Each domain/site doesn’t need to have its own copy of WordPress. You just point all the domains to the same hosting account, and WordPress itself handles which one to show.

      Basically, before you create the new “site” in WordPress, the domain you eventually want to point to your new site should point to your primary, or master, site.

      For example, ottopress.com here is on a multisite installation with my other site as the primary (ottodestruct.com). Both sites point to the exact same hosting account, and the same installation directory on that hosting account. WordPress determines which site to display based on what domain name you’re asking for.

  37. Now I cannot connect to the domains. Says the URL does not exist after I try mapping them.

    • I can’t explain how to do it exactly, unfortunately. Every hosting service is different.

      I use GoDaddy hosting for this site, and setting it up involves three steps for me.
      1. Point the IP address of the domain at my hosting IP.
      2. Set up my host to map the domain name to my root directory.
      3. Set up the domain mapping in WordPress.

      Those are the general three steps you need to follow. How exactly to do those steps varies a lot.

  38. Ah OK. I was missing step #2 in your list. I had to go back in my host and set the root installation folder over to my parent multisite blog’s root folder. I had it set to the child domain’s root, not the parent’s. I’m just not used to doing that. But, looks like I got it! Now I can log into it just fine and I see all my plugins! Thank you so much!!! 🙂

  39. Hi Otto,
    I am fairly new to using the multi-site functionality of WordPress (never worked with MU) and would like to thank you for your clear and thorough tutorial!
    What I don’t really understand though is why I cannot see the theme editor in the dashboard of a mapped subdomain?
    Because if that is the correct “result” of working with multi-site and domain mapping, then that would mean that you cannot use the same theme on different sites?

    • @Piet
      hello Piet !
      I think it may help you

      Go to your wordpress installation and open this file wp-config.php

      Add this line :
      define('WP_DEFAULT_THEME', 'classic');
      just before
      /* That's all, stop editing! Happy blogging. */
      Save that file .

  40. Replace the theme(“classic”) I mentioned with the theme name which you want to set as default .

    • @Asshu – thx for your reply, but that is not what I meant I think.

      If I use the “normal” multi-site option in WP 3.0, I can add themes to the network and on the subdomain I can edit these themes in the theme editor.

      However, if I have enabled the domain mapping plugin as per Otto’s tutorial, I cannot edit the theme(s) anymore. The entire theme editor option is gone from the dashboard…

  41. Hi, got the plugin to work and is able to map domains to subdomains of the site.

    However… I got a domain with extended characters (Swedish to be exact) and I also have an alternative domain I’d like to use for character challenged users. Let’s say, åäö.se and aao.se. Currently my main site is set up under the aao.se domain and I’m able to map sub.åäö.se to sub.aao.se but not åäö.se to aao.se as current version of the plug-in does not allow entering a domain to map to the main site. Does anyone know if there is a way to map domains to the main domain or if there is a plug-in out there that will allow you to make the two domain interchangeable so I don’t have to map each new sub domain that I set up?

    Thanks

  42. […] mas en nuestro wordpress, pero este aún no está preparado para soportar varios dominios y a esto vamos […]

  43. Thanks for this! Very useful. I’d be grateful if you could answer me on these two questions :
    – Is it possible to setup a configuration to have multiple different ip addresses for each of the hosted site for SEO ?
    – Can I still edit each of the plug-ins options by site ? And if I edit the main template in the master site, will it be applied to all the child sites ?

    Thanks!

  44. Hi,

    I have created a multiblog system with WP 3.0.1 in sub-directories, with 1 main blog and 4 sub-blogs. 2 of the sub-blogs are mapped to a subdomain according to your tutorial here. All is working fine!

    Now I wanted to create a NEW sub-blog. I logged in as superadmin, created a new blog, named “testblog”.
    But if I try to edit this blog, going to “edit” in superadmin, it does not show me any blog settings
    http://i35.tinypic.com/2dt582c.jpg

    as it shows them to me at all other working sub-blogs:
    http://i34.tinypic.com/21nfeky.jpg

    I don’t know much about databases and PHP, but it seems to me, that this new sub-blog has not been created in database.

    I could create new sub-blogs BEFORE I have installed the domain mapping. But AFTER the domain mapping installation, I cannot create new sub-blogs.

    Have you an idea, what has went wrong?
    Thanks,
    Chris

  45. […] 其他的就没什么啦,就是按照<WordPress 3.0: Multisite Domain Mapping Tutorial>这篇教程里教的做就行了. Leave a comment | Trackback No comments yet. […]

Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Need to post PHP code? Wrap it in [php] and [/php] tags.