I am setting up a multi-site MODX installation. Does anyone have a tutorial on how to get multi-sites to work in MODX including if there are any DNS changes that need to be made for the domain(s)?
I never tried this, but I believe it is possible to use it with Xrouting extra and use the multi-context approach.
You should point your domains / sub domains to the same up of your modx server instance and XRouting should do the job of the contexts are properly configured.
I will let other experienced users to comment on this.
I believe this is what I used to get my multi-site instance set up: https://forums.modx.com/thread/93185/multi-site-single-core-manager-setup. I couldnât find any new tutorials in the docs.
No extras/mods required.
As long as your DNS records are directing your domains to your host, I donât think you will have to modify them. Then, based on where the actual sites will live, you will need to point your domains appropriately via your hostâŚit worked way better than I thought it would.
I did run into a snagâŚBut all is working now.
Thanks for the replies!
What I have done so far is create a context for my 2nd domain with settings for http_host, site_url, setting_site_start, and email sender. I think installed XRouting
Using an A Record, I pointed my 2nd domain to the same IP as my main IP. But it isnât working. I am not sure what I am missing.
XRouting is great for multilingual websites but Iâve had issues using it with multiple domains before. The easiest way to do this is using your own context switcher plugin: https://docs.modx.com/current/en/building-sites/contexts/gateway-plugin
So, create a new plugin and copy and paste the code below into the Create/edit plugin tab (Update the domain name and context keys):
<?php
/* don't execute if in the Manager */
if ($modx->context->get('key') == 'mgr') {
return;
}
switch ($_SERVER['HTTP_HOST']) {
case 'domain1.tld':
// if the http_host is of a specific domain, switch the context
$modx->switchContext('web'); // Context key
break;
case 'domain2.tld':
// if the http_host is of a specific domain, switch the context
$modx->switchContext('domain2.tld'); // Context key
break;
default:
// by default, don't do anything
break;
}
Then click the System events
tab at the top of the plugin page and in the list search for OnHandleRequest
. Check the Enabled
box.
That should work, but youâll probably need to update your htaccess/ nginx config to handle the multiple domains and friendly urls.
Thanks inside-creative! I have applied your plugin and customized the URL and keys but it still doesnât seem to work. My secondary domain is pointed to the same IP as the main domain with an A record.
Perhaps I need to make changes to htaccess / nginx as you mentioned. Sorry for being a nube at this, but can you give me an idea of what changes would be made to the htaccess / nginx?
No worries, we were all new once :D.
What server are you running? Are you running an Apache server or Nignx? Or are you using ModxCloud hosting or another host? (need to determine what we need to update).
Also
- Do you get any errors in your error log when you visit the second domain?
- What error page do you see when you visit the second domain? Is it a 404, 403, 501âŚ
I am on an Apache server. It isnât in ModxCloud (just another hosting provider). I am not getting any error message in the MODX log when I try to view the second domain. When I try to go to the second domain, I am getting the hosting providerâs âparkedâ page.
That sounds like you still need to point the domain to go the same MODX installation, on the hosting side. How that works exactly depends on the host, but typically youâd add a âDomain Aliasâ or âPointer Domainâ or something like that.
What hosting are you using? As @markh mentioned you need to point the domain to the Modx installation. I know on hosting like 1and1 you can point the domain to a sub directory on your web server, just Double check the path
Thanks markh and inside-creative! It turns out it was a setting with the hosting provider. My hosting provider doesnât have Domain Aliases as a feature, but does allow for âAddon Domainâ in the hosting settings for the main domain. I just need them to enable that feature as it is now allowed by default.
To summarize how I ended up having it work:
- I created the context and settings
- I installed the Gateway Manager plugin and setup it up with my settings.
- Setup the Addon Domain feature to add the secondary domain to the main domain