删除旧的固定链接?
Posted
技术标签:
【中文标题】删除旧的固定链接?【英文标题】:Remove Old Permalinks? 【发布时间】:2015-12-01 06:34:19 【问题描述】:我有一个 Wordpress 网站。我已经多次更改我的永久链接。我使用的所有过去版本的永久链接仍然有效。如果我在 URL 栏中输入它们,我会被带到页面,而 URL 不会更改/重定向到新的/当前的永久链接。
为什么旧的永久链接不重定向到新的?
这会导致 Google 读取重复内容时出现问题。
Example: .com/lightbulb .com/shop/lightbulb
第二个网址是旧的,但在我输入时仍然有效。
不应该重定向到新的吗? 如何删除旧的永久链接,以免被 Google 发现?
提前致谢
【问题讨论】:
Options +FollowSymLinks RewriteEngine on RewriteRule (.*) exapmle.com/lightbulb/$1 [R=301,L] 请检查这个并告诉我? 我来到这个quora问题,有不同的要求。编辑了一个 slug,我想让旧的 slug 现在可以使用。 wordpress 给出了 301,但我想删除它。最后我找到了这篇文章wptheming.com/2015/12/purge-old-slug-redirects来解决我的问题。将其发布在这里,希望对有此要求的人有所帮助。 【参考方案1】:如您所见,当您更改永久链接结构时,Wordpress 不会处理重定向。有两种方法可以通过:
-
htaccess 重写规则(手动编辑 .htaccess 文件)取决于您的新旧/新永久链接结构。 如果
.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>
永久重定向用于最佳 SEO 实践,明确将旧的永久链接重定向到新的永久链接,避免重复内容,并告诉搜索引擎您的旧固定链接已被移动明确给新的。
-
重定向 Wordpress 免费插件 (有很多):
Redirections 插件是最受欢迎的,并提供易于管理的 301 重定向和 404 错误跟踪。它还提供了更高级的工具来帮助您跟踪网站上的松散问题,例如损坏的链接和孤立页面。
Simple 301 redirects 插件很简单,当您将内容从一个位置永久移动到另一个位置时,它会创建 301 重定向。
Quick Page/Post Redirect 插件通过指定重定向 URL 和类型(301、302、307、元)轻松地将页面/帖子或自定义帖子类型重定向到另一个页面/帖子或外部 URL。
Safe Redirect Manager 插件附带一个额外的白名单功能,以增加安全性……
SEO Redirection Plugin 插件支持生成 301、302 和 307 重定向,还支持通过简单的一键式重定向进行 404 错误监控……
正在转换数据库中的旧路径(urls) (如果它们仍然存在):
您可以使用Search and Replace免费插件,在您的数据库中轻松找到一些旧的相关网址或路径,并将它们批量替换为新的。这是一个非常强大的插件,有一点小错误,但是当你知道它时工作正常(但之前总是备份)。
最近的参考:A Simple Guide to Changing Your Permalinks Without Breaking Your WordPress Website
【讨论】:
【参考方案2】:我认为旧的永久链接存储在表 postmeta
和 _wp_old_slug
的 meta_key
中
如果你想清除所有旧的蛞蝓,你可以使用这个:
DELETE FROM wp_postmeta WHERE meta_key = '_wp_old_slug';
【讨论】:
如果他不确定为什么会发生这种情况,wp_postmeta 中的条目是否重复,我建议不要删除,而是通过用新链接替换旧链接来更新表。另外,表前缀是“wp_”吗? 出于好奇,_wp_old_slug
是如何导致问题的?
如果用户通过旧 slug 到达帖子,WP 通过读取 _wp_old_slug
元值重定向到帖子。它的用途与 301 重定向类似。
我知道但是为什么旧链接没有重定向到新链接?正如 OP 所说:我使用的所有过去版本的永久链接仍在工作...没有 URL 更改/重定向到新的/当前永久链接。【参考方案3】:
为什么旧的永久链接不重定向到新的?
每次您添加新的永久链接结构并刷新重写规则时,WordPress 不会将旧链接重定向到新链接。相反,WordPress 会用新链接完全改变旧链接。
我使用的所有过去版本的永久链接仍然有效。
在 WordPress 中,URL 不会映射到路由。它是looped through rewrite rules to find a match - 一个真实的 URL,可以通过parse_request 方法转换为数据库查询。
这意味着如果不删除匹配旧链接的旧重写规则。旧链接仍然有效。
如何删除旧的永久链接以免被 Google 发现?
由于它们已被 Google 索引,我认为permanent redirects 是最好的解决方案。
我假设您使用的是 Apache,如果没有,请告诉我。
在您的情况下,只需在您的 .htaccess
文件中的 WordPress 规则之前添加以下代码:
RewriteEngine On
RewriteRule "^shop/(.+)/?$" "http://example.com/$1" [R=301,L]
【讨论】:
旧的永久链接存储在哪里?它存储在某个数据库中?为什么不能从数据库中选择并删除它? @it_is_a_literature 通过init
钩子添加的重写规则没有保存在数据库中。或者它也可能被缓存。根据当前问题的信息,很难知道什么是问题。我的回答只是一些帮助您找出问题的指南,但我希望它可以帮助:)
删除默认路由说明 - wpreset.com/remove-default-wordpress-rewrite-rules-permalinks。如果 Google 已经编入索引,请确保您正在重定向。以上是关于删除旧的固定链接?的主要内容,如果未能解决你的问题,请参考以下文章