我有一个网站WordPress 博客它具有常见的永久链接结构:
/%postname%/
但我想包括日期在永久链接中:
/%year%/%monthnum%/%day%/%postname%/
因此有这样的帖子:
www.mysite.com/beautiful-title
将翻译/重定向到此
www.mysite.com/2011/03/23/beautiful-title
我知道我必须应用重写规则将所有以前的永久链接(现在已被 Google、Yahoo 或 Bing 等搜索引擎编入索引)发送到新的永久链接,因为如果我不这样做,所有这些链接都会得到 404,对吗?
什么是正确的方法在 Nginx 中?这是我正在使用的 Web 服务器,但重写规则的结构对我来说相当神秘 :(
********************* 更新 ********************
好吧,这个问题终于在 WordPress 的魔力下得到了解决。事实上,我不需要对 Nginx 做任何事情或重写规则。
事实是,当 Google 显示你的 WP 博客的结果时,它会转到列出的链接,但随后WordPress 自动将此链接转换为正确的链接你已经根据你的永久链接结构获得了。
所以我刚刚改变了我的永久链接结构,现在 URL 上有日期,并且一切正常。毕竟没有 Google(或其他搜索引擎)的惩罚 ;)
问候!
答案1
您可以使用 Wordpress 数据库和一些 上的信息SELECT
来汇编一个从旧 URL 到新 URL 的 URL 列表,例如:
/beautiful-title /2011/03/23/beautiful-title
然后根据你网站上的帖子数量,用这些信息重写一个很长的文件。它不太美观。你将得到一个很长的文件,其中包含:
location / {
rewrite ^/beautiful-title/?$ /2011/03/23/beautiful-title permanent;
rewrite ^/beautiful-title2/?$ /2011/03/22/beautiful-title2 permanent;
... and so on ...
}
是的,你必须把每个旧 URL 都指向新 URL,因为新 URL 取决于日期,所以没什么可做的。好消息是,理论上你必须坚持一段时间,直到机器人注意到永久重定向(301)并更新数据库。但对于收藏了您的帖子的人来说,情况并非如此。