据我所知,只有 post_name 在 WP post 的 uri 中很重要:
wp-site.com/category/post_name
等于wp-site.com/category2/post_name
.
因此,当您将 wp-posts 表迁移到新的 CI 帖子表时,请保留post_name
字段以识别请求的内容。
我向您提交了一个简单的解决方案来保留旧 URL:
例如:您的旧 URI 就像/category1/cateogry2/post_name/
配置/路由.php
//old post URIs (WP)
//$3 = post_name
$route['([a-z0-9\-_]+)/([a-z0-9\-_]+)/([a-z0-9\-_]+)/'] = 'posts/single/$3';
//new post URIs
//e.g: /post_name.html
$route['([a-z0-9\-_]+)\.html'] = 'posts/single/$1';
控制器/posts.php
//posts method
public function single($post_name) {
//check post_name in DB
//...
//check URI (optionnal)
//there are not one segment in the uri so this is an old URI
if( $this->uri->total_segments() > 1 ) {
redirect($post_name.'.html', 301);
}
//...
}
通过此解决方案,当您访问时http://site.com/category1/cateogry2/post_name/
,将调用 posts/single 方法并将您重定向到新的 URL(http://site.com/post_name.html
如果需要)。