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

问题描述 投票:0回答:1

Google 控制台上弹出了以下奇怪的 URL...

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

  • 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


.htaccess redirect http-status-code-301
1个回答
0
投票
制作这些页面的软件已经消失,不再需要了。我只想操作
RedirectMatch 301 /gallery.html?page=1 /gallery.html

页面


(根据你的例子,我认为你的意思是
Gallery.html

?)

您无法使用 mod_alias 

gallery.html

(或

?
)指令来匹配 URL 的查询字符串部分(第一个
RedirectMatch
之后的所有内容)。
Redirect
指令仅与 URL 路径匹配。但是,这也需要正则表达式,因此
RedirectMatch
.
是正则表达式中的特殊字符。
您需要使用 mod_rewrite 来代替,并附加一个检查 

?

服务器变量的条件。

要重定向 

QUERY_STRING

(其中

/gallery.html?page=<number>
是 0-9 的任何数字序列),那么您需要在
<number>
文件顶部执行类似以下操作(指令的顺序很重要):
.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

子模式匹配数字0-9零次或多次。

需要 

\d*

(查询字符串丢弃)标志才能从重定向响应中删除查询字符串。

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

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


旁白:

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


我不确定你到底在哪里看到的?但这不一定看起来像“错误”。 (您的
QSD

标签似乎已正确配置。)

对您的域进行 Google 

rel="canonical"

搜索不会返回有问题的 URL,仅返回

site:
,因此此重定向可能没有必要。
    

© www.soinside.com 2019 - 2024. All rights reserved.