0

我想将永久链接从 更改/%postname%.html/%year%/%monthnum%/%postname%.html

我知道如何从 Worpdress 管理面板做到这一点。但是我收到了超过 20000 个帖子,所以我想知道是否有机会从 .htacess 重定向我的旧帖子并/%postname%.html重定向到/%year%/%monthnum%/%postname%.html

4

1 回答 1

1

您应该在 WordPress 本身中执行此操作(与 相矛盾.htaccess),因为您必须根据帖子名获取真正的永久链接。

请尝试将您的永久链接更新为新结构,并将以下代码添加到您的functions.php文件中。

<?php
function redirect_postname_to_date_structure($wp) {
    $pattern = '#^([^/]+)\.html$#';
    $matches = array();

    if ( preg_match( $pattern, $wp->request, $matches ) ) {
        $slug = $matches[1];

        $args = array(
            'name' => $slug,
            'post_type' => 'post',
            'post_status' => 'publish',
            'posts_per_page' => 1
        );

        // Try to retrieve post based on slug
        $posts = get_posts( $args );

        if ( $posts ) {
            $permalink = get_permalink( $posts[0]->ID );

            wp_redirect( $permalink, 301 );
            exit;
        }
    }
}
add_action( 'parse_request', 'redirect_postname_to_date_structure' );
?>

PS:我建议您首先使用 302 状态码(in wp_redirect())进行测试。当您确信它有效时,您可以切换到 301。

于 2013-03-13T12:26:26.953 回答