【问题标题】:301 redirect with GET variables使用 GET 变量进行 301 重定向
【发布时间】:2020-07-13 08:52:20
【问题描述】:

大家早上好,

当我在 google 上搜索我的网站名称时,我最终会看到很多链接,例如 mysite.com/?page=1 mysite.com/?page=2 等等。

我想重定向 301 个以 mysite.com/?page=X 结尾的链接 到 monsite.com 因为我害怕谷歌知道它显示了我网站的所有主页,会把它视为重复的内容......

我试过了

RewriteCond %{QUERY_STRING} ^page=1(&|$) [NC] 

RewriteRule ^(mysite)/?$ /$1? [R=301,L]

这对我来说不起作用。

你能帮我吗?

提前致谢,

【问题讨论】:

  • RewriteRule 仅匹配 URL 的路径部分。 mysite 不是您显示的示例“URL”的路径组件的一部分。
  • @CBroe 是的,这正是 OP 使用 RewriteCond 来测试查询部分的原因。
  • 您的问题不清楚...请投入更多精力来修改您的问题。您的问题下方有一个“编辑”链接,使用它 ...您写道:“我有同样的问题”...与什么相同?您写道您的页面被引用...为什么这是一个问题? “不起作用”实际上是什么意思?为什么要使用重写来处理对您网站的错误引用?
  • 感谢您的回答,我已经编辑了我的消息。对不起,我的英语不完美。
  • @arkascha 我指的是RewriteRule ^(mysite)/?$,与给定的示例mysite.com/?page=1相关

标签: .htaccess variables redirect get


【解决方案1】:

要重定向此类请求,这应该是您正在寻找的:

RewriteEngine on
RewriteCond %{QUERY_STRING} (?:^|&)page=\d+(?:&|$) [NC] 
RewriteRule ^/?$ / [QSD,R=301,END]

或者一个更一般的例子,它保留给定的路径

RewriteEngine on
RewriteCond %{QUERY_STRING} (?:^|&)page=\d+(?:&|$) [NC] 
RewriteRule ^ %{REQUEST_URI} [QSD,R=301,END]

但请记住,即使使用这种重定向,您仍然会遇到在某处生成这些引用的问题。谷歌不会编造它们。因此,要解决实际问题而不仅仅是症状,您必须找到实际问题...

【讨论】:

  • 您好,我在 htaccess 中测试了您的指令,但它们不起作用。我在别处读到无法重定向 GET 中的变量 ...
  • 好吧,没有从 mysite.com/?page=2 url 重定向到 mysite.com
  • 这些规则适用于您提到的那个 URL。会不会是您正在查看缓存的结果?
猜你喜欢
  • 2012-05-14
  • 2013-09-19
  • 2020-02-14
  • 1970-01-01
  • 2014-04-09
  • 2016-05-30
  • 2019-02-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多