【问题标题】:How to redirect old Wordpress blog posts urls to new ones如何将旧的 Wordpress 博客文章 url 重定向到新的
【发布时间】: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

标签: php wordpress .htaccess redirect mod-rewrite


【解决方案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 中自动完成。

【讨论】:

  • 我不太听从你的建议。能否详细说明这会导致什么结果?
猜你喜欢
  • 1970-01-01
  • 2011-07-23
  • 2013-05-15
  • 2016-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多