如何使用 HTTP 301 重定向移动站点并切换链接结构

如何使用 HTTP 301 重定向移动站点并切换链接结构

我目前将我的 wordpress 博客(apache2、ubuntu linux)托管在 eg 上,mysite.com使用基于 ID 的链接,例如http://mysite.com/?p=547。我有两个目标:

  1. 将我的博客移至mysite.com/blog
  2. 将链接结构更改/{post-title}/?p={post-id}

迁移到新结构应该足够简单,就像更改 wordpress 中的设置以使用新的永久链接结构一样。

我还想做的是不会破坏random(1..100)当前链接到我的网站。我想使用 HTTP 301 永久重定向,但我不确定如何通过更改 apache 的设置来实现这一点。

/blog/第一个问题是处理所有请求的重定向。

第二个问题是处理新的链接结构。我想我可以很容易地查询 mysql 数据库并生成类似的东西?p={post-id} > {post-title},但我不确定语法应该是什么样的以及我需要把它放在哪里。

任何帮助将非常感激。

答案1

当您将 URL 方案从 p=123 更改为 post-title 时,wordpress 会自动将访问者从旧 ID URL 301 引导至您的正确 URL - 这样就搞定了。

接下来,由于您的内容是通过 ?p=[0-100] 访问的,因此您可以非常轻松地通过 PHP 处理此问题。在我看来,有两种解决方案 - 一种比另一种更优雅一些。

  1. 编写一些代码,根据 GET 中的 pageid 查看 Wordpress 数据库,并据此 301 用户。

  2. 执行 1 对 1 301 重定向,例如

<?php
if(isset($_GET['p']) && is_numeric($_GET['p'])) {
  header("HTTP/1.1 301 Moved Permanently");
  header("Location: http://www.mydomain.tld/blog/?p=".$_GET['p']);
}
?>

上述代码未经测试,但应该可以说明这个想法。 上述代码在许多情况下会导致 2 个 301 - 但就搜索引擎而言,它应该只会发送 301 两次并让它们更新其 URL。

书签 - 您无法对它做太多的操作。

相关内容