.htaccess 奇怪的字符在URL的结尾和301 wont重定向到正确的URL

b5buobof  于 2023-10-23  发布在  其他
关注(0)|答案(1)|浏览(134)

下面的奇怪的网址弹出了谷歌控制台.
我没有添加它们,我不知道它们从哪里来。

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

我在.htaccess中的301重定向适用于其他页面,但不适用于上述URL
有人能帮我吗?我想把它们重定向到/gallery.html
添加到我的.htaccess,适用于其他重定向

RedirectMatch 301 /gallery.html?page=1 /gallery.html
l7wslrjt

l7wslrjt1#

该软件,使这些网页已经消失,它不需要。我只是希望Gallery.html页操作
(我假设你的意思是gallery.html,按照你的例子?)
不能使用mod_alias RedirectMatch(或Redirect)指令匹配URL的查询字符串部分(第一个?之后的所有内容)。RedirectMatch指令仅匹配URL路径。然而,这也需要正则表达式,因此.?是正则表达式中的特殊字符。
您需要使用mod_rewrite,并附加一个检查QUERY_STRING服务器变量的条件。
要重定向/gallery.html?page=<number>(其中<number>是数字0-9的任何序列),那么您需要在.htaccess文件的顶部附近执行以下操作(指令的顺序很重要):

RewriteEngine On

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

$0反向引用包含来自RewriteRule * 模式 *(即“gallery.html“)的整个匹配。
\d*子模式匹配数字0-9零次或多次。
QSD(查询字符串丢弃)标志是从重定向响应中删除查询字符串所必需的。
如果查询字符串中有任何其他URL参数,则不会发生重定向(因为正则表达式不匹配)。
首先使用302(临时)重定向进行测试,以避免潜在的缓存问题。

  • 旁白:*

下面的奇怪的网址弹出了谷歌控制台.
我没有设置规范,但谷歌仍然给出错误“替代网页与适当的规范标签”
我不确定你是在哪里看到的?但这看起来不一定像是一个“错误”。(你的rel="canonical"标签似乎配置正确。)
在您的域上进行Google site:搜索不会返回有问题的URL,而只返回/gallery.html,因此此重定向可能是不必要的。

相关问题