我有一个WordPress的网站。我已经改变了我的永久链接几次。所有过去的版本我使用仍在工作的永久链接。如果键入他们到地址栏,我被带到页面而不URL变化/重定向到新的/当前固定链接。
为什么不老的永久链接重定向到新的?
这导致与谷歌阅读重复内容的问题。
Example: .com/lightbulb .com/shop/lightbulb
第二个URL是旧的,但是当我键入它仍然有效。
难道不应该重定向到新的? 如何从由谷歌被发现删除旧的永久链接?
提前致谢
正如你所看到的,当你改变你的永久链接结构的WordPress不处理重定向。有2种方法来处理这个问题,通过:
.com/lightbulb
是新的路径和.com/shop/lightbul
旧:Options -Indexes
Options -Multiviews
Options +FollowSymLinks
<IfModule mod_rewrite.c>
RewriteEngine on
RedirectMatch 301 /shop/lightbulb(.*) /lightbulb$1
# or
# RewriteRule ^shop/lightbulb?(.*) http://www.domain.com/lightbulb$1 [R=301,L]
</IfModule>
但是,如果你想重定向旧永久链接结构.com/shop/
主域您.htaccess
规则将是:
Options -Indexes
Options -Multiviews
Options +FollowSymLinks
<IfModule mod_rewrite.c>
RewriteEngine on
RedirectMatch 301 /shop/(.*) /$1
# or
# RewriteRule ^shop/?(.*) http://www.domain.com/$1
</IfModule>
永久重定向来获得最佳的搜索引擎优化的做法,明确重定向旧的永久链接到新的,避免重复的内容,并告诉你的旧的永久链接已经明确转移到新的搜索引擎。
在数据库转换老路(URL)的(如果它们仍然存在):
您可以使用Search and Replace免费的插件,可以轻松地找到你的数据库和散装一些老的相关网址或路径由新的替换它们。这是一个非常强大的插件,一个小马车,但做工精细,当你知道它(但在此之前一直做一个备份)。
最近的一个参考: A Simple Guide to Changing Your Permalinks Without Breaking Your WordPress Website
我觉得老固定链接存储在表postmeta
与meta_key
的_wp_old_slug
如果你想清除所有的老蛞蝓,你可以使用这个的:
DELETE FROM wp_postmeta WHERE meta_key = '_wp_old_slug';
为什么不老的永久链接重定向到新的?
每次添加新的永久链接结构,并刷新重写规则的时间,WordPress的不重定向旧链接到新的链接。取而代之的是,WordPress会改变与完全的新链接的旧链接。
所有过去的版本我使用仍在工作的永久链接。
在WordPress中,一个网址不映射到路线。这是looped through rewrite rules to find a match - 可以通过parse_request方法转化为数据库查询一个真正的URL。
这意味着,如果匹配的旧链接,其中旧重写规则不会被删除。旧的链接仍然有效。
如何从由谷歌被发现删除旧的永久链接?
因为他们已经被谷歌收录,我觉得permanent redirects是最好的解决办法。
我假设你使用Apache,如果没有,请让我知道。
在你的情况,只需在您的.htaccess
文件WordPress的规则之前,添加以下代码:
RewriteEngine On
RewriteRule "^shop/(.+)/?$" "http://example.com/$1" [R=301,L]