如何将旧的 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-post
301--> 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.php
或index.php
中使用这个404 处理【参考方案2】:
如果我是你,我会在我的 ftp 上创建一个新文件“博客”,然后我会将所有旧 wordpress 剪切并粘贴到这个新文件中。这样,你不需要更改 .htaccess 中的任何内容,重定向将在 wordpress bo 中自动完成。
【讨论】:
我不太听从你的建议。能否详细说明这会导致什么结果?以上是关于如何将旧的 Wordpress 博客文章 url 重定向到新的的主要内容,如果未能解决你的问题,请参考以下文章
如何将旧的 mdb-database 导入 C# DataTable [重复]