3

我目前有一个使用 WordPress 的博客,使用如下 URL:

www.domain.com/blog/?pid=384092817

这是在我对任何事情一无所知之前。现在有大量内容,我想将我的 URL 结构更改为:

www.domain.com/my-post-title-384092817

有没有办法设置我的 .htaccess 和 mod 重写,所以当用户转到第一个 url 时,他们会得到 301 重定向到第二个 URL?我知道将我的 WordPress 地址 (URL) 设置从 www.domain.com/blog 更改为 www.domain.com 并将我的永久链接设置更改为 /%postname%-%post_id%,但是我如何告诉旧 URL 重定向到新的?

4

2 回答 2

4

你的意思是当用户访问第二个 URL 时,它会被重写为第一个?这可以做到

RewriteRule /blog/.+-(\d+)$ /blog/?pid=$1

如果您想将 301 重定向从旧 URL 发送到新 URL,那么您无法使用 .htaccess 文件真正做到这一点。原因是 Apache 的 mod_rewrite 无法访问您帖子的标题,因此它不知道在 URL 中插入什么标题。您必须使用 PHP 进行重定向。

编辑:你知道吗,实际上这并不完全正确。RewriteMap你可以用这个指令做一些非常疯狂的事情,比如指示 Apache 要求任意程序执行重写,这样你就可以拥有一个 PHP 脚本,它可以执行一些数据库工作来确定标题是什么并据此适当地重写 URL。但这似乎是一种过于复杂的解决方案,我不建议这样做——直接从 PHP 发送重定向会更干净、更容易。

于 2009-03-12T00:49:19.100 回答
3

根据您的 WP 版本,您可以只使用永久链接重定向插件——应该在 WordPress 中为您解决问题,而无需 mod_rewrite。然而,从 WordPress 2.3 开始,其中的大部分内容应该可以自动运行。此时,您唯一需要做的就是将所有 /blog/... 请求重定向到路由,您可以通过 mod_rewrite 大致如下所示:

RewriteRule ^blog(.*) $1 [QSA]
于 2009-03-17T13:53:43.553 回答