我目前使用以下网址设置了一个使用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重定向到新的?
答案 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]