我目前将我的 wordpress 博客(apache2、ubuntu linux)托管在 eg 上,mysite.com
使用基于 ID 的链接,例如http://mysite.com/?p=547
。我有两个目标:
- 将我的博客移至
mysite.com/blog
- 将链接结构更改
/{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 处理此问题。在我看来,有两种解决方案 - 一种比另一种更优雅一些。
编写一些代码,根据 GET 中的 pageid 查看 Wordpress 数据库,并据此 301 用户。
执行 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。
书签 - 您无法对它做太多的操作。