I’ve got a CakePHP install running six different web sites, each with their own webroot. All of the base code is the same (controllers, models, etc.), just the css, images, js and so forth are split into the separate webroots (app/webroot, app/webroot_second_site, app/webroot_third_site, etc.)
My question is: Is there a way to share common resources among the webroots? So we don’t have six different copies of TinyMCE and jQuery cluttering up our project, and more importantly to me, so that we can make a change in a common CSS file instead of having to copy/paste a change across six different sites’ folders?
If these sites were running on a Linux box, I think it could be fairly easily accomplished with a symlink from each of the webroots to a common folder higher up in the directory tree, but we’re running Windows Server 2003 / IIS 6. Any suggestions?
Turns out you can do directory symlinks in NTFS file systems. Or at least close enough for practical purposes. “NTFS Junctions” will work for what you want.
Grab the Sysinternals “Junction” program for a simple command-line program to create/delete these junctions.
Then you can link whatever common directories you need to a single master directory.
For example, if you have
webroot1/
webroot2/
webroot3/
each with their own “js/” directory, then you could create
webroot_common/js/
and then symlink… er, “create junctions” to that new directory like so:
(yes, the “junction” program takes its inputs backwards from Linux “ln -s”)
Then you can put whatever common js files you need, like jQuery, in that common folder, and leave any site-specific js files in “webrootX/js”.