首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除查询字符串和参数

删除查询字符串和参数
EN

Stack Overflow用户
提问于 2021-02-01 03:10:31
回答 2查看 2.1K关注 0票数 2

出于不值得在这里讨论的原因,谷歌一直在为我的一个站点建立索引,在URL中使用不必要的查询字符串,即wordfence_lhhidwordfence_logHuman。我想修改我的.htaccess文件以删除所有这些查询字符串。

我的网址

代码语言:javascript
复制
example.com/page/111/?wordfence_lh=1&hid=CA2BA660BEFF26B9A17F8F85D7391BD4

example.com/page/80/?wordfence_logHuman=1&hid=647700EBF43600E7BC54103256F1D71B

预期URL

代码语言:javascript
复制
example.com/page/111/

example.com/page/80/

我找到了一种删除单个参数的方法,但仍然找不到正则表达式或其他东西来删除多个查询参数。任何帮助都是非常感谢的,非常感谢!

下面是我的.htaccess文件的一部分:

代码语言:javascript
复制
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} on [OR]
RewriteCond %{SERVER_PORT} ^555$ [OR]
RewriteCond %{HTTP:X-Forwarded-Proto} https
RewriteRule .* - [E=WPR_SSL:-https]
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteRule .* - [E=WPR_ENC:_gzip]
RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{QUERY_STRING} =""
RewriteCond %{HTTP:Cookie} !(wordpress_logged_in_.+|wp-postpass_|wptouch_switch_toggle|comment_author_|comment_author_email_) [NC]
RewriteCond %{REQUEST_URI} !^(/(.+/)?feed/?.+/?|/(?:.+/)?embed/|/(index\.php/)?wp\-json(/.*|$)|/cantonicalt/)$ [NC]
RewriteCond %{HTTP_USER_AGENT} !^(facebookexternalhit).* [NC]
RewriteCond "%{DOCUMENT_ROOT}/wp-content/cache/wp-rocket/%{HTTP_HOST}%{REQUEST_URI}/index%{ENV:WPR_SSL}%{ENV:WPR_WEBP}.html%{ENV:WPR_ENC}" -f
RewriteRule .* "/wp-content/cache/wp-rocket/%{HTTP_HOST}%{REQUEST_URI}/index%{ENV:WPR_SSL}%{ENV:WPR_WEBP}.html%{ENV:WPR_ENC}" [L]
</IfModule>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-03 21:36:55

除了3个

参数wordfence_lh、hid和wordfence_logHuman之外,我没有看到任何其他的URL参数。我想把它们移走

如果在任何其他URL上没有任何其他URL参数,那么如果存在任何查询字符串,那么只删除整个查询字符串是最简单的。例如:

代码语言:javascript
复制
# Remove any query string on all URLs
RewriteCond %{QUERY_STRING} .
RewriteRule ^ %{REQUEST_URI} [QSD,R=301,L]

这需要放在.htaccess文件的顶部,在您现有的指令之前。

RewriteCond指令检查是否存在任何查询字符串。QSD标志从重定向响应中丢弃查询字符串。

但是,如果在其他URL上有其他URL参数,则需要保留这些URL参数,然后检查这些特定URL参数(正如最初建议的那样),然后如果存在这些URL参数,则删除整个查询字符串。例如:

代码语言:javascript
复制
# Remove the entire query string if any one of the URL params are present
RewriteCond %{QUERY_STRING} (&|^)(wordfence_lh|hid|wordfence_logHuman)=
RewriteRule ^ %{REQUEST_URI} [QSD,R=301,L]

,但我仍然不想干扰其他测量工具,比如google。

除非您在其他URL上使用URL参数,而且这些URL参数有时与要删除的URL参数混合使用,否则这不是一个问题。

更新:

最近我刚用.你的第二个密码也是这样吗?有什么关系?

RewriteCond %{QUERY_STRING} ^(.*)&?wordfence_lh=^&+&?(.*)$ NC RewriteRule ^/?(.*)$ /$1?%1%2 R=301,L RewriteCond %{QUERY_STRING} ^(.*)&?wordfence_logHuman=^&+&?(.*)$ NC RewriteRule ^/?(.*)$ /$1?%1%2 R=301,L RewriteCond %{QUERY_STRING} ^(.*)&?hid=^&+&?(.*)$ NC RewriteRule ^/(.*)$ /$1?%1%2 R=301,L

不,不是“一样”。它正在“尝试”保留与您想要删除的URL参数混合的URL参数(正如我在上面的最后一句中提到的)--这似乎不是您所必需的。

然而,这些指令有几个问题:

  1. --它匹配的太多,可能会破坏查询字符串。例如,它不仅与hid=匹配,还将匹配foohid=,然后将保留可能“破坏”查询字符串的foo部分。例如:给定像foohid=123&bar=1这样的查询字符串,上面的指令将重定向到foobar=1,这显然是不正确的。

  1. 本系列的3条规则可能触发3条外部重定向,因为对于要删除的每个URL参数,都会触发单独的重定向。这应该(也是可以避免的)。在您的示例URL (只包含两个URL参数)中,您将得到两个重定向。两个重定向不一定太糟糕,但是,它可以简化为一个重定向(最坏的情况)。
票数 0
EN

Stack Overflow用户

发布于 2021-02-01 07:29:06

这是简单的SEO。在robots.txt中需要块GET请求--只需在robots.txt中添加其

代码语言:javascript
复制
Disallow: /?

并且都得到url块作为索引(不是索引)。谷歌需要一段时间才能从搜索中删除垃圾页面。

您可以阻止任何垃圾页,只需添加

代码语言:javascript
复制
Disallow: *?s=
Disallow: *&s=
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65986697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档