更改WordPress URL结构,同时使用mod_rewrite维护正确的301重定向

时间:2009-03-12 00:19:14

标签: php wordpress .htaccess

我目前使用以下网址设置了一个使用WordPress的博客:

  
    

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

  

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

  
    

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

  

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

2 个答案:

答案 0 :(得分:4)

你真的是说当用户转到第二个网址时,它会被重写为第一个吗?这可以用

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

如果您要将旧网址中的301重定向发送到新网址,那么您无法使用.htaccess文件执行此操作。原因是Apache的mod_rewrite无法访问您帖子的标题,因此它不知道要在URL中插入什么标题。你必须用PHP重定向。

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

答案 1 :(得分:3)

根据你的WP版本,你可以使用Permalink redirect plugin - 应该在WordPress中为你做技巧而不用mod_rewrite。但是,从WordPress 2.3开始,很多should work automatically。此时,您唯一需要做的就是将所有/ blog / ...请求重定向到路由,您可以通过mod_rewrite大致这样做:

RewriteRule ^blog(.*) $1 [QSA]