Commit 6575a26c authored by webchick's avatar webchick
Browse files

#231298 by Crell and rednahead: Allow for aliased multi-site support.

parent fecf236c
...@@ -62,6 +62,8 @@ Drupal 7.0, xxxx-xx-xx (development version) ...@@ -62,6 +62,8 @@ Drupal 7.0, xxxx-xx-xx (development version)
uploading a site logo--that don't require the overhead of databases and uploading a site logo--that don't require the overhead of databases and
hooks, the current unmanaged copy, move and delete operations have been hooks, the current unmanaged copy, move and delete operations have been
preserved but renamed to file_unmanaged_*(). preserved but renamed to file_unmanaged_*().
- Added aliased multi-site support:
* Added support for mapping domain names to sites directories.
Drupal 6.0, 2008-02-13 Drupal 6.0, 2008-02-13
---------------------- ----------------------
......
...@@ -292,6 +292,30 @@ function timer_stop($name) { ...@@ -292,6 +292,30 @@ function timer_stop($name) {
* *
* 13. $confdir/default * 13. $confdir/default
* *
* If a file named sites.php is present in the $confdir, it will be loaded
* prior to scanning for directories. It should define an associative array
* named $sites, which maps domains to directories. It should be in the form
* of:
*
* $sites = array(
* 'The url to alias' => 'A directory within the sites directory'
* );
*
* For example:
*
* $sites = array(
* 'devexample.com' => 'example.com',
* 'localhost/example' => 'example.com',
* );
*
* The above array will cause Drupal to look for a directory named
* "example.com" in the sites directory whenever a request comes from
* "example.com", "devexample.com", or "localhost/example". That is useful
* on development servers, where the domain name may not be the same as the
* domain of the live server. Since Drupal stores file paths into the database
* (files, system table, etc.) this will ensure the paths are correct while
* accessed on development servers.
*
* @param $require_settings * @param $require_settings
* Only configuration directories with an existing settings.php file * Only configuration directories with an existing settings.php file
* will be recognized. Defaults to TRUE. During initial installation, * will be recognized. Defaults to TRUE. During initial installation,
...@@ -311,12 +335,22 @@ function conf_path($require_settings = TRUE, $reset = FALSE) { ...@@ -311,12 +335,22 @@ function conf_path($require_settings = TRUE, $reset = FALSE) {
} }
$confdir = 'sites'; $confdir = 'sites';
$sites = array();
if (file_exists(DRUPAL_ROOT . '/' . $confdir . '/sites.php')) {
// This will overwrite $sites with the desired mappings.
include(DRUPAL_ROOT . '/' . $confdir . '/sites.php');
}
$uri = explode('/', $_SERVER['SCRIPT_NAME'] ? $_SERVER['SCRIPT_NAME'] : $_SERVER['SCRIPT_FILENAME']); $uri = explode('/', $_SERVER['SCRIPT_NAME'] ? $_SERVER['SCRIPT_NAME'] : $_SERVER['SCRIPT_FILENAME']);
$server = explode('.', implode('.', array_reverse(explode(':', rtrim($_SERVER['HTTP_HOST'], '.'))))); $server = explode('.', implode('.', array_reverse(explode(':', rtrim($_SERVER['HTTP_HOST'], '.')))));
for ($i = count($uri) - 1; $i > 0; $i--) { for ($i = count($uri) - 1; $i > 0; $i--) {
for ($j = count($server); $j > 0; $j--) { for ($j = count($server); $j > 0; $j--) {
$dir = implode('.', array_slice($server, -$j)) . implode('.', array_slice($uri, 0, $i)); $dir = implode('.', array_slice($server, -$j)) . implode('.', array_slice($uri, 0, $i));
if (file_exists("$confdir/$dir/settings.php") || (!$require_settings && file_exists("$confdir/$dir"))) { if (isset($sites[$dir]) && file_exists(DRUPAL_ROOT . '/' . $confdir . '/' . $sites[$dir])) {
$dir = $sites[$dir];
}
if (file_exists(DRUPAL_ROOT . '/' . $confdir . '/' . $dir . '/settings.php') || (!$require_settings && file_exists(DRUPAL_ROOT . '/' . $confdir . '/' . $dir))) {
$conf = "$confdir/$dir"; $conf = "$confdir/$dir";
return $conf; return $conf;
} }
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment