URL 末尾的奇怪字符和 301 不会将它们重定向到正确的 URL

Strange Characters at end of URL and 301 wont redirect them to correct url

提问人:David 提问时间:8/25/2023 最后编辑:MrWhiteDavid 更新时间:8/25/2023 访问量:32

问:

以下奇怪的 URL 出现在 Google 控制台上......

我没有添加它们,也不知道它们来自哪里。

  • https://www.example.com/gallery.html?page=3
  • https://www.example.com/gallery.html?page=2
  • https://www.example.com/gallery.html?page=1

我的 301 重定向适用于其他页面,但不适用于上述这些 URL.htaccess

谁能帮我,我想将他们重定向到/gallery.html

添加到我的,适用于其他重定向.htaccess

RedirectMatch 301 /gallery.html?page=1 /gallery.html
.htaccess 重定向 http-status-code-301

评论

0赞 MrWhite 8/25/2023
什么是“奇怪的字符”?您指的是查询字符串(即)吗?虽然这看起来像是分页“画廊”的“正常”查询字符串?所以它们看起来根本不像“奇怪的 URL”!?我想知道你是否真的应该设置一个元素(如果你还没有的话)??page=<number>rel="canonical"
0赞 David 8/25/2023
奇怪的字符是 ?page=3
0赞 David 8/25/2023
我确实设置了规范,但谷歌仍然给出错误“具有正确规范标签的替代页面”
1赞 David 8/25/2023
你能告诉我如何简单地重定向这些页面吗?制作这些页面的软件已经消失了,不需要它了。我只想让 Gallery.html 页面运行

答:

0赞 MrWhite 8/25/2023 #1

制作这些页面的软件已经消失了,不需要它了。我只想让页面正常运行Gallery.html

(我假设你的意思是,根据你的例子?gallery.html

不能使用 mod_alias(或)指令匹配 URL 的查询字符串部分(第一个之后的所有内容)。该指令仅与 URL 路径匹配。但是,这也需要正则表达式,因此和是正则表达式中的特殊字符。?RedirectMatchRedirectRedirectMatch.?

您需要改用mod_rewrite,并附加一个检查服务器变量的条件。QUERY_STRING

要重定向(其中是任何数字序列 0-9),那么您需要在文件顶部附近执行如下操作(指令的顺序很重要):/gallery.html?page=<number><number>.htaccess

RewriteEngine On

# Redirect to remove "?page=" query string
RewriteCond %{QUERY_STRING} ^page=\d*$
RewriteRule ^gallery\.html$ /$0 [QSD,R=301,L]

反向引用包含模式的整个匹配项(即。"").$0RewriteRulegallery.html

子模式将数字 0-9 匹配零次或多次。\d*

(Query String Discard) 标志是从重定向响应中删除查询字符串所必需的。QSD

如果查询字符串中有任何其他 URL 参数,则不会发生重定向(因为正则表达式不匹配)。

首先使用 302(临时)重定向进行测试,以避免潜在的缓存问题。


旁白:

以下奇怪的 URL 出现在 Google 控制台上......
我确实设置了规范,但谷歌仍然给出错误“具有正确规范标签的替代页面”

我不确定你到底在哪里看到的?但这并不一定看起来像一个“错误”。(您的标签似乎已正确配置。rel="canonical"

Google 在您的域上搜索不会返回有问题的 URL,而只会返回 ,因此可能没有必要进行此重定向。site:/gallery.html

评论

0赞 David 8/26/2023
感谢您抽出宝贵时间写下这一切。真的很感激。
0赞 David 8/26/2023
因此,我将代码添加到.htaccess中作为第一个条目,但不幸的是,该站点将不再加载500错误。
0赞 David 8/26/2023
“发生错误:500 - 内部服务器错误”
0赞 David 8/26/2023
关于你关于我在谷歌控制台上看到它的问题。它被列为失败项目,说明该页面未被编入索引的原因。
0赞 David 8/26/2023
您知道是什么原因导致了 500 错误吗?