Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

Archive /

Our old forums are still available as a read-only archive.

Moderators: martimiz, Sean, Ed, biapar, Willr, Ingo

Connecting to different databases

Go to End

3 Posts   1451 Views


Community Member, 12 Posts

2 September 2008 at 10:36pm

Edited: 02/09/2008 10:43pm


I have a requirement to connect to different databases depending on a given condition. The condition can be encoded as a part of the URL. I want to use the same CMS code, same template, same page types, etc.; but to connect to a different database.

For example lets say I have a site called and I want SS to use the database 'fruits' whenever the URL or is found. Likewise I may have another database called 'vegetables' whenever SS sees or the other variant of the URL. Is this possible by any means?

I can do this by using an HTTP Post variable but then permanent URLs cannot be given.

Tried using Subsites module but no luck. It installs without issues but I don't get the Subsites drop-down on the CMS admin.

Any help is greatly appreciated.



Forum Moderator, 5521 Posts

5 September 2008 at 9:48pm

the best way (and safest) is to use GET variables. As the URL parser has special order eg so if you did it would first look for the Page with a url of fruit, then second a class called fruit. But you would probably want to set the DB on a bunch of situations.. So I would suggest have then in the _config you can do if isset($_GET['d']) $database = ? etc.


Community Member, 12 Posts

6 September 2008 at 12:38am

Hey Will,

Thanks for the reply. Well, I tried doing that. I modified the .htaccess file to give me the database in the URL with

/sapphire/main.php?db=$1&url=$2&%{QUERY_STRING} [L]

Then I added the line to _config.php in mysite to change the baseURL with

Director::setBaseURL(<new base url>)

The issue is, it works if you type the URL manually, but SilverStripe doesn't make links to match the new base URL. So it gives a 'page not found' error.

What can I do to remedy this?