【问题标题】:How can I make htaccess ignore or 404 urls like this page/27/?p=yvwasetgrnv如何让 htaccess 忽略或 404 url​​ 像这个页面/27/?p=yvwasetgrnv
【发布时间】:2011-12-21 16:10:30
【问题描述】:

在我重新设计我的网站以提供更多有用的内容和教程后,Google 扼杀了我的排名。我想我发现了其中一个原因……

不知何故,像这样的网址正在被索引。我应该只有 1-2k 个索引页面,但我有 5,000 个,其中许多是这样的:

site.com*/page/27/?p=yvwasetgrnv*

我检查了 Wordpress SEO 插件告诉 google 的是规范网址,但消息并不好: site.com/business/why-is-your-prospective-customer-not-buying*/page/27/*...

这甚至不是我网站上的真实页面。您在那里看到的标题是一篇博客文章,但由于 url 中的参数,wordpress 列出了一个目录页面,以及更多相同内容的页面。

我需要从索引中删除这些重复项,并在我的网站上将它们全部 404。

我怎样才能使用 .htaccess 来完成呢?

【问题讨论】:

  • 您是否有无效的查询字符串参数列表,或者是否有其他方法来识别哪些 ULR 有效/无效,例如示例 URL 或其他规则?
  • 我会尝试解决根本问题,即您的 html 中不正确的规范链接元素。
  • Ulrich:我希望所有 ?p= 重定向到实际页面的永久链接(规范网址)。我对 /page/27/ 问题有点难过,因为用 /page/ 告诉服务器任何事情都是错误的,这不是我要走的路,因为我会失去分页。 Gerben:我希望可以,但规范是由 Yoast 的 Wordpress SEO 插件自动生成的。

标签: wordpress .htaccess


【解决方案1】:

我也同意找到根本原因是理想的方法。

但是,如果您不能这样做,您可以尝试将以下内容添加到您的 .htaccess 文件中,最好是在顶部(如果那里有其他规则)。

如果存在p 查询字符串参数,它将删除所有查询字符串参数。我假设规范 url 是没有查询字符串参数的 URL

RewriteEngine on
RewriteBase /

#if a request has a p query string parameter
RewriteCond %{QUERY_STRING} (^|&)p= [NC]
#then 301 redirect to URL without any query string parameters
RewriteRule (.*) http://%{HTTP_HOST}/$1? [L,R=301]

【讨论】:

  • 实际上,查询字符串似乎并不是真正的问题。 Wordpress SEO 生成的规范 url 不包含查询字符串,所以这很好。但是规范的 url 包括 /page/29/ 或任何页面......在这种情况下不应该存在分页。你可以在这里看到:webhostingbreak.com/page/20/?p=abufgcxtxxijn p= 正在调用一个实际的帖子,但由于 url 中的分页,它试图显示一个存档。所以,我们有 1 篇无限分页的帖子。我的网站上不应该有任何从根目录分页的网址,即 site.com/page/1/
  • 所以,似乎解决方案(对不起,我以前没有看到这个)是使用 htaccess 从 url 中删除 /page/1/ (分页),如果它是在 .com 之后出现的/ 但不是其他任何地方
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-03
  • 1970-01-01
  • 2023-03-14
相关资源
最近更新 更多