出于不值得在这里讨论的原因,谷歌一直在为我的一个站点建立索引,在URL中使用不必要的查询字符串,即wordfence_lh、hid和wordfence_logHuman。我想修改我的.htaccess文件以删除所有这些查询字符串。
我的网址
example.com/page/111/?wordfence_lh=1&hid=CA2BA660BEFF26B9A17F8F85D7391BD4
example.com/page/80/?wordfence_logHuman=1&hid=647700EBF43600E7BC54103256F1D71B预期URL
example.com/page/111/
example.com/page/80/我找到了一种删除单个参数的方法,但仍然找不到正则表达式或其他东西来删除多个查询参数。任何帮助都是非常感谢的,非常感谢!
下面是我的.htaccess文件的一部分:
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>发布于 2021-02-03 21:36:55
除了3个
参数wordfence_lh、hid和wordfence_logHuman之外,我没有看到任何其他的URL参数。我想把它们移走
如果在任何其他URL上没有任何其他URL参数,那么如果存在任何查询字符串,那么只删除整个查询字符串是最简单的。例如:
# 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参数,则删除整个查询字符串。例如:
# 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参数(正如我在上面的最后一句中提到的)--这似乎不是您所必需的。
然而,这些指令有几个问题:
hid=匹配,还将匹配foohid=,然后将保留可能“破坏”查询字符串的foo部分。例如:给定像foohid=123&bar=1这样的查询字符串,上面的指令将重定向到foobar=1,这显然是不正确的。发布于 2021-02-01 07:29:06
这是简单的SEO。在robots.txt中需要块GET请求--只需在robots.txt中添加其
Disallow: /?并且都得到url块作为索引(不是索引)。谷歌需要一段时间才能从搜索中删除垃圾页面。
您可以阻止任何垃圾页,只需添加
Disallow: *?s=
Disallow: *&s=https://stackoverflow.com/questions/65986697
复制相似问题