How to create mass 301 redirects with PHP in Nginx server without using a WP plugin

wordpress.stackexchange https://wordpress.stackexchange.com/questions/324851

  •  14-04-2021
  •  | 
  •  

Question

New on Nginx based web server setup and finding a way to create mass 301 redirects in a WP site without using any plugins.

It is fairly easy in Apache based web server as you only need to put this at the end of your .htaccess file but this won't work in Nginx:

Redirect 301 /old-url /new-url

Was it helpful?

Solution

Seems the easiest way to do it is via PHP without changing any Nginx server config by adding this at the start of the wp-config.php file:

// Trailing slashes matters here so /old1 is different from /old1/
$redirect_targets = array(
  '/old-url' => '/new-url',
  '/old-url2' => '/new-url2',
  '/old-url3' => '/new-url3',
);

// Added a way not to accidentally break wp-cli
if ( (isset($redirect_targets[ $_SERVER['REQUEST_URI'] ] ) ) && (php_sapi_name() != "cli") ) {
  header('HTTP/1.0 301 Moved Permanently');
  header('Location: https://'. $_SERVER['HTTP_HOST'] . $redirect_targets[ $_SERVER['REQUEST_URI'] ]);

  exit();
}
Licensed under: CC-BY-SA with attribution
Not affiliated with wordpress.stackexchange
scroll top