The configuration features now available in wp-config.php now offer you a great deal of flexibility if you have multiple domains parked at the same host or multiple blogs where you wish to share one or more of the database or the code.
Move the wp-code
First of I’d suggest keeping the wp-code out of the main directory. Read Giving_WordPress_Its_Own_Directory
This will give you the flexibility of serving other code more easily. Eg: one parked domain may be redirected to a subdomain not using wordpress at all.
Defining the siteurl overrides the option table. Plugin developers should use this and not fetch it from the options table.
define('WP_SITEURL', 'http://example.com/wp'); define('WP_HOME', 'http://example.com');
Index.php example:
if (strstr($_SERVER['SERVER_NAME'], "onedomain.com")) { // serve up the default wordpress index.php code define('WP_USE_THEMES', true); require('./wp/wp-blog-header.php'); } elseif (strstr($_SERVER['SERVER_NAME'], "anotherdomain.com.)) { // redirect to the subdomain, passing the query string along header( 'Location: http://subdomain.anotherdomain.com'.$_SERVER['REQUEST_URI']) ; }
If statement
In the wp-config.php file, code an if statement similar to above to determine what your url request is (eg: which domain name) and set the appropriate field to achieve the effect noted below.
Plug-in authors beware – plugins must be tested with these various schemes
Plugins must use these constants or run the risk of not working on some installations. Users should check all aspects of their plugins.
Configuration values
Multiple Installations in One Database
// You can have multiple installations in one database if you give each a unique prefix $table_prefix = 'r235_'; // Only numbers, letters, and underscores please!
define('DB_NAME', 'MyDatabaseName'); // Example MySQL database name
Share Code, but not Themes or Plugins
Move the wp-content directory and define the following:
define( 'WP_CONTENT_DIR', $_SERVER['DOCUMENT_ROOT'] . '/blog/wp-content' ); and
define( 'WP_CONTENT_URL', 'http://example/blog/wp-content');
Warning if Moving
Don’t forget to change the settings in the Miscellaneous settings for your uploads
Advanced Options
There are more advanced options too, using for example:
define('TEMPLATEPATH', get_template_directory()); define('STYLESHEETPATH', get_stylesheet_directory()); Note: beware: Multiple domains sharing the same wordpress installation must have the same permalink structure - changes to one will edit the .htaccess, which will then override the previously set permalink.