我的问题类似于Wordpress (Postname Permalink) 404 error,但它超越了这个问题。
我的客户在默认的Wordpress博客结构中拥有数百个页面YYYY / MM / post-name
他们希望将其移至Permalink Structure / post-name
但是,Google和其他搜索引擎中的现有链接必须重定向到正确的“新”链接。页面,不是404,也不是主页。
我的问题是,使用最新版本的Wordpress(在编写本4.6.1时) - 如果你只是进入SETTINGS>永久链接> Post-Name它会正常工作吗?
OR
您是否仍需要修改.htaccess文件,以便“旧网页”能够修改。重定向到新页面?
如果是这样 - 什么是正确的.htaccess文件语法,以便每个新链接都是' 301重定向'告诉搜索引擎该页面已永久移动?
谢谢!
答案 0 :(得分:2)
在functions.php
中使用此模板作为替代add_action('template_redirect','check404');
function check404(){
if (is_404() ) {
$url = $_SERVER['REQUEST_URI'];
$url = esc_url_raw( $url );
//FIND IF THERE IS A POST...
$e = explode("/", $url);
$reversed = array_reverse($e);
$number = $reversed[0];
$link = get_permalink($number);
if(!empty($link)){
wp_redirect( $link, 301 );
exit;
}
else
return;
}
}
这将重定向/YYYY/MM/post-name/
- > /后名称/
答案 1 :(得分:1)
您可以在.htaccess
RewriteEngine On
Redirect 301 /YYYY/MM/post-name/ http://yoursite.com/post-name/
您可以创建一个名为enumerate.php
的文件来列出您的所有帖子:
include "wp-load.php";
$posts = new WP_Query('post_type=any&posts_per_page=-1&post_status=publish');
$posts = $posts->posts;
header('Content-type:text/plain');
foreach($posts as $post) {
switch ($post->post_type) {
case 'revision':
case 'nav_menu_item':
break;
case 'page':
$permalink = get_page_link($post->ID);
break;
case 'post':
$permalink = get_permalink($post->ID);
break;
case 'attachment':
$permalink = get_attachment_link($post->ID);
break;
default:
$permalink = get_post_permalink($post->ID);
break;
}
echo "\n{$permalink}";
//echo "\n{$post->post_type}\t{$permalink}\t{$post->post_title}";
}
将枚举放入WordPress主文件夹,您将获得可用于.htaccess
文件的列表。
答案 2 :(得分:1)
最后,您可以尝试更新固定链接结构:),并尝试使用旧网址。
如果出现问题,您可以恢复旧的永久链接结构。