11

I have multi-site wordpress, I want to redirect the main site to one of the sub-site but redirection in .htacecss gives error. Is there any way to redirect a main site to its sub-site. That looks not possible but I am not a wordpress expert so just verifying.

The redirect should be like

redirect 301 www.example.com/main-site www.example.com/main-site/sub-site

Or if there is any other way to do that?

10
+50

You can use the parse_request action to accomplish this. Simply enable this plugin on your primary blog. Place the following code in a .php file and upload it to your plugins directory.

/*
Plugin Name: Redirect Main Site To Sub-Site
Description: Redirect 'main-site' to 'main-site/sub-site/'
Version: 0.1
Author: WPSE
Author URI: http://wordpress.stackexchange.com
License: GPL2
*/

add_action('parse_request', 'redirect_to_sub_site');
function redirect_to_sub_site(){
    global $wp;

    #Sniff requests for a specific slug
    if('main-site' === $wp->request){

        #The URL to redirect TO
        $url = 'http://www.example.com/main-site/sub-site/';

        #Let WordPress handle the redirect - the second parameter is obviously the status
        wp_redirect($url, 301);

        #It's important to exit, otherwise wp_redirect won't work properly
        exit;
    }
}

Let me know if you have any questions.

  • +1 And here's it again as nice two liner ;) – kaiser Sep 27 '12 at 0:49
  • 1
    @Toqeer You should Award the bounty. Won't get it back anway. ;) – kaiser Sep 27 '12 at 19:50
  • Just awarded, I thought it will be automatically awarded :) – Toqeer Sep 28 '12 at 6:16
  • I tried now with the latest WordPress version but it is not working. Do you have any idea? – User Jul 29 '15 at 9:57
  • 1
    I found a solution for that, instead of checking the $wp->request, just check with the function is_main_site(); – Maor Barazany May 26 '16 at 14:43
3

It appears that the $wp->request that suggested in the above reply is always an empty string (in WPMS 4.5.2), so instead you can check this against is_main_site();.

2

The accepted answer is not working for Wordpress 4.9.8. Here is the updated and tested code. Put this inside function.php of the active theme.

<?php
function wpse66115_redirect_to_sub_site() {
  if ( is_main_site() ) {
    exit( wp_redirect( 'http://www.example.com/main-site/sub-site/', 301 ) );
  }
}
add_action( 'parse_request', 'wpse66115_redirect_to_sub_site' );
?>

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.