如何将旧的 Wordpress 博客文章 url 重定向到新的

Posted

技术标签:

【中文标题】如何将旧的 Wordpress 博客文章 url 重定向到新的【英文标题】:How to redirect old Wordpress blog posts urls to new ones 【发布时间】:2016-06-27 04:46:38 【问题描述】:

我的 Wordpress 网站的博客文章 URL 过去看起来像这样:

http://example.com/some-random-blog-post-name http://example.com/other-random-blog-post-name http://example.com/in-case-you-dont-get-the-point-theyre-all-different

在我的新 Wordpress 网站上,我希望它们位于它们所属的 /blog/ 子目录中:

http://example.com/blog/some-random-blog-post-name

棘手的是旧的 URL 不遵循任何模式,所以我认为我需要匹配任何无法识别的内容。像这样的东西几乎可以工作......

# Redirect unmatched blog posts to /blog/*
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_URI !blog
RewriteCond %HTTP_HOST ^example.com [NC,OR]
RewriteRule ^(.*)$ https://example.com/blog/$1 [L,R=301,NC]
</IfModule>

...但它与 Wordpress 自己的 RewriteRules 冲突,并破坏了所有其他应该通过不变的网站页面。

那么我该如何实现以下目标:

example.com/some-random-post 301--> example.com/blog/some-random-post example.com/another-random-post301--> example.com/blog/another-random-post

example.com/contact/ -->(无重定向)

【问题讨论】:

哪些 URL 模式应该重定向到 /blog,哪些不应该? @anubhava 我认为上面的问题已经解释过了。旧博客文章没有特定的模式,因为它们没有以子目录为前缀。所以基本上我们需要重定向任何不是现有 Wordpress 页面的内容。 在这种情况下 mod_rewrite 不是解决方案。需要在 WP 本身中处理。 @anubhava 我全神贯注。你有什么建议 可以看看RewriteMap。 【参考方案1】:

在主题的404.php(或 404 处理程序)内,您可以在文件开头使用此 sn-p:

<?php

$url = $_SERVER['REQUEST_URI'];

if (stripos($url, "/blog/", 0) !== 0) 
   header("Location: " . "/blog" . $url);
   exit;


// rest of the 404 code
?>

【讨论】:

是的,这也是我在考虑的......我知道将代码粘贴在 404.php 模板文件中会起作用,但我认为如果该逻辑存在于函数中,它会更清晰.php...你知道有没有针对 404 请求的钩子/过滤器吗? 我实际上不是 WP 专家。有一个名为is_404() 的函数可以让您在header.phpindex.php 中使用这个404 处理【参考方案2】:

如果我是你,我会在我的 ftp 上创建一个新文件“博客”,然后我会将所有旧 wordpress 剪切并粘贴到这个新文件中。这样,你不需要更改 .htaccess 中的任何内容,重定向将在 wordpress bo 中自动完成。

【讨论】:

我不太听从你的建议。能否详细说明这会导致什么结果?

以上是关于如何将旧的 Wordpress 博客文章 url 重定向到新的的主要内容,如果未能解决你的问题,请参考以下文章

删除后如何将旧的反应输入存储在R闪亮中

如何将旧的 mdb-database 导入 C# DataTable [重复]

WordPress 如何批量修改文章信息?

如何使用 Daffodil 将旧的 VC6 项目移动到 VS2010

如何将旧的小部件迁移到新的小部件

将旧网站(HTML 文件)保留在网络服务器上,但不允许搜索代理对其进行索引