我想将永久链接从/%postname%.html
更改为/%year%/%monthnum%/%postname%.html
。
我知道如何从Worpdress管理面板中执行此操作。但是我发帖超过20000,所以我想知道是否有机会从.htacess重定向我的帖子,/%postname%.html
重定向到/%year%/%monthnum%/%postname%.html
答案 0 :(得分: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状态代码(在wp_redirect()
中)进行测试。当你确信它有效时,你可以切换到301.