gpt4 book ai didi

regex - 使用htaccess删除单个查询参数

转载 作者:行者123 更新时间:2023-12-02 08:35:40 26 4
gpt4 key购买 nike

由于不值得在这里讨论的原因,Google一直在使用URL中不必要的查询字符串为我的网站之一建立索引。我想将htaccess文件修改为301,将所有这些请求重定向到URL,而无需查询字符串的不需要部分,但保留查询字符串的任何其他部分(可能是(或可能不是)地址的一部分)确保保留其他功能。

例如,以下URL

http://example.com/product.php?query=12345
http://example.com/index.php?section=ABC123&query=56789
http://example.com/search.php?query=987654&term=keyword

会成为
http://example.com/product.php
http://example.com/index.php?section=ABC123
http://example.com/search.php?term=keyword

有效地剥离'query = XXXXX'加上?或&,但要确保在删除后仍保留其他查询并使用正确的语法(即仅从第三个示例中删除?query = 98765不会起作用,因为它将链接保留为search.php&term = keyword而不是search .php?term =关键字)。

正在查看其他一些Stack答案,并发现了这一点:
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING} (.*)?&?query=[^&]+&?(.*)? [NC]
RewriteCond %{REQUEST_URI} /(.*)
RewriteRule .* %3?%1%2? [R=301,L]

但这似乎不起作用,我对htaccess和regex的了解还不足以弄清原因。

在此先感谢您提供任何指导。

最佳答案

尝试一下(我用您的示例对其进行了测试,并且工作正常):

RewriteEngine on

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

另外,您应该添加条件以仅将此规则应用于现有文件(由您决定)。
如果你想要的话:
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{QUERY_STRING} ^(.*)&?query=[^&]+&?(.*)$ [NC]
RewriteRule ^/?(.*)$ /$1?%1%2 [R=301,L]

关于regex - 使用htaccess删除单个查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21857280/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com