Multisite Blog Alias

Description

WP Multisite plugin to maintain URL-redirects for Blogs.

Features

  • Permanent 301 Redirect to blogs main domain
  • Painless installation and activation – no file access necessary.
  • Checks domain status
  • Supports UTF-8 Domains
  • WP-Cli commands

Usage

  1. Set up your DNS. Make sure your Domain points to your WordPress installation. You can achieve this by either setting up an A- or CNAME-Record in your DNS configuration. Your webserver must be configured to handle requests on the given Domain.
  2. Under Network Admin – Sites edit the site and select the Alias Domains Tab.
  3. Enter the domain without http ao / and click “Add”.
  4. Click “Check Status” to see if it worked. If something went wrong you will see an error message.

If you want to redirect with URL path appended (e.g. from some-alias.tld/some/path to some-real-blog.tld/some/path), add this to your wp-config.php:

define( 'WPMU_BLOG_ALIAS_REDIRECT_WITH_PATH', true );

Status messages

Warning: The domain matches the site URL of this blog: The Blog is using the domain name as Site URL.

Error: The domain is already used by another site: A different Blog is already using the domain as Site URL. Eiter Remove the alias from the sblog you are currently workin on, or from the other one.

The domain is unreachable: There is likely an error in your DNS or your Webserver configuration. Use nslookup from he command line or whatsmydns.net to check the DNS-Settings.

The domain or a redirect does not point to this blog: Following all redirects did not end up on your WordPress-Site, but somewhere else. There is likely an error in your DNS or your Webserver configuration.

WP-CLI Examples

Listing Domain aliases

List alias domains for blog-id 123

wp alias-domains list --blog_id=123

Output minified json of all aliases

wp alias-domains list --format=json --compact=2

Output csv including the header row but omitting other messages into file

wp alias-domains list --format=csv --compact > alias-list.csv

Add Domain Alias

wp alias-domains add --blog_id=123 --domain_alias=quux.foobar.tld

Remove Domain Alias

Remove a specific alias

wp alias-domains remove --domain_alias=quux.foobar.tld

Remove all aliases for blog 123

wp alias-domains remove --blog_id=123

Testing Domain Aliases

wp alias-domains test --domain_alias=quux.foobar.tld<h3>Plugin PHP-API</h3>

The plugin introduces two functions allowing you to add / remove a domain aliases from inside PHP.

Add Domain alias

$result = alias_domain_add( $blog_id, 'quux.foobar.tld' );
if ( is_wp_error( $result ) ) {
    // handle error
}

Remove specific Domain alias

$result = alias_domain_remove_by( 'domain_alias', 'quux.foobar.tld' );
if ( is_wp_error( $result ) ) {
    // handle error
}

Remove Domain aliases for a specific blog

$result = alias_domain_remove_by( 'blog_id', 123 );
if ( is_wp_error( $result ) ) {
    // handle error
}<h3>Development</h3>

Please head over to the source code on Github.

Screenshots

  • Network admin – Edit site. I completely messed up a few webservers to run the last test in the list!

Installation

Follow the standard WordPress plugin installation procedere.

The installer will:
1. Create a database table {$table_prefix}alias_domains
2. Create a file wp-content/sunrise.php or append its PHP to it, if the file already exists.
3. Insert define( 'SUNRISE', true ); in your wp-config.

FAQ

I found a bug. Where should I post it?

Please use the issues section in the GitHub-Repository.

I will most likely not maintain the forum support forum on wordpress.org. Anyway, other users might have an answer for you, so it’s worth a shot.

I’d like to suggest a feature. Where should I post it?

Please post an issue in the GitHub-Repository

Will you anwser support requests by email?

No.

The plugin works pretty well for me. Any way I can show my appreciation?

Thanks! As a well trained person living in a rich country there is little more I need.
The majority on the other hand is not doing very well. And because this plugin is about redirection, I’d like to point your attention to the several refugee crises taking place everwhere around the world.

If my little piece of software was able to help you, please consider helping others and place a donation at the UNHCR.

Reviews

30 May 2024
This let me do exactly what I needed to do in the most ideal/streamlined/WordPress-integrated way I could imagine it being implemented (it can be so annoying when plugins create their own admin page layout, tables, tabs, styles, etc. when they could’ve/should’ve just used what WordPress offers for those as standard, like this plugin has done.) It’s flexible depending on certain needs & even has WP-CLI commands without having feature creep of stuff that’s unrelated to this plugin’s core goal (also on GitHub and doesn’t have any ads/promos/upgrades like other plugins.) Even the “Check Status” tool when viewing a site’s domain alias(es) is capable (checks many different possible situations [great to see the whatsmydns.net mention for if/when a DNS change might be needed]) yet concise to then be addressed swiftly. I simply network-enabled the plugin, edited the site details to add the Alias Domain(s), and it worked! This plugin really checked off every box to have this be a top-recommended plugin for this (now more people just need to find out about this & use it instead of hard-coding redirects/rewrites or using plugins that, simply put, aren’t as nice as this one. Honestly, this seems like a go-to if/when a WordPress multi-site network has a site on it that wants to use “www.” as the primary domain of the site while then not including “www.” has WordPress wanting to show either the “register a site” or “you cannot register a site here” since it’s considered as a different subdomain & therefore a different site (even though a site that doesn’t want to use “www.” still resolves properly when that is provided in the URL)… maybe WordPress core will make that no longer needing to be manually accommodated, but this is now my favored way to handle this (replacing rewrites/redirects [especially if/when on nginx or some other hosting setup that might be more restrictive where WordPress should probably just handle it.]) Even the “Donate to this plugin” link for this plugin’s details on WP.org is currently going to UN Refugees instead of themselves. This plugin has really earned its praise.
Read all 5 reviews

Contributors & Developers

“Multisite Blog Alias” is open source software. The following people have contributed to this plugin.

Contributors

Translate “Multisite Blog Alias” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

1.2.0

  • Status Check: Test SSL status and show redirects
  • Introduce PHP functions alias_domain_add() and alias_domain_remove_by()
  • CLI: Introduce site_id parameter
  • Refactor: Error messages

1.1.9

  • Fix: PHP 8.2 deprecation notices
  • Fix: Missing network admin page title

1.1.8

  • Enhancement: Handle ms_network_not_found

1.1.7

  • Fixed main blog redirection
  • Test with PHP 8
  • Test with WP 5.8

1.1.6

  • Feature: auto-remove blog aliases when a blog is being deleted
  • Fix: domain check returned false negative if network admin is under ssl and blog URL is not
  • Fix: Model class didn’t return insert id. As a result action blog_alias_created was called with a wrong argument

1.1.5

  • Plugin-API: introduce filter blog_alias_create_data and actions blog_alias_created, blog_alias_delete, blog_alias_deleted, blog_alias_delete_multiple and blog_alias_deleted_multiple
  • Fix: redirect after activation in WP-Cli environment
  • Fix: php warning __wakeup magic method
  • Fix: Sunrise and wp-config.php not changed after activation

1.1.4

  • Security hardening
  • Tested up to WordPress 5.6

1.1.3

  • Fix: Wrong table updated after upgrade

1.1.2

  • Fix: Not installing on Mysql <=5.6 / InnoDB
  • Fix: Support domain names with up to 253 characters

1.1.1

  • Fix: Fatal error on entwork activation

1.1.0

  • More input validation
  • Drop support for PHP 5.5
  • Code Refactoring
  • Fix: Domain name not visible when alias was created with wp-cli

1.0.4

  • Security hardening

1.0.3

  • Add Option “Redirect with Path” to network settings page
  • Introduce wp-cli –field parameter

1.0.2

  • Add support for utf8 domain names
  • Fix PHP strict warning

1.0.1

  • Send X-Redirect-By HTTP Header
  • Option to redirect with path using constant WPMU_BLOG_ALIAS_REDIRECT_WITH_PATH.
  • Fix: PHP Fatal in sunrise.php if formatting functions are not present
  • Fix: Make sure Status check ah´jax is loaded from Network-URL
  • Validation: Make sure only hostnames can be entered

1.0.0

  • Initial release