301将URL结构从旧重定向到新

时间:2014-02-28 作者:Zach Russell

我最近更新了网站的permalink结构/%postname%//%category%/%postname%/ 这显然导致了404个错误。有没有办法在WordPress中以更自动化的方式为每篇文章编写301个重定向?我本质上想通过编程301将URI从旧的permalink结构重定向到新的结构。

3 个回复
最合适的回答,由SO网友:Gabriel 整理而成

您可以使用过滤器404\\u模板在wordpress中捕获404

也可以使用重定向插件:http://wordpress.org/plugins/redirection/screenshots/ 使用Regex。

你可以点击这个问题中的链接吗:Catch 404 after changing permalink structure from /%postname%/ to /%category%/%postname%/

SO网友:TheDeadMedic
/**
 * Redirect a "/%postname%/" permalink structure to the their new URL.
 * 
 * @link http://wordpress.stackexchange.com/q/136306/1685
 */
function wpse_136306_redirect() {
    global $wp;

    // Check that we\'ve hit a 404 for a non-empty permalink without slashes
    if ( is_404() && strlen( $wp->request ) && strpos( $wp->request, \'/\' ) === false ) {
        // Attempt to find a post that matches the request.
        $posts = get_posts(
            array(
                \'posts_per_page\' => 1,
                \'name\' => $wp->request,
            )
        );

        if ( $posts && $url = get_permalink( $posts[0]->ID ) ) {
            // All good, let\'s redirect to the new URL.
            wp_redirect( $url, 301 );
            exit;
        }
    }
}

add_action( \'template_redirect\', \'wpse_136306_redirect\', 1 );
SO网友:Raymond Chenon

如果您对Wordpress插件没有问题,可以使用WP redirection plugin.

正则表达式是您的朋友https://redirection.me/support/redirect-regular-expressions/

Source URL, 设置.*

在里面Target URL, 设置/category/$1 . 棘手的部分是你的category 是一个变量。

结束