How to create mass 301 redirects with PHP in Nginx server without using a WP plugin
-
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
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