如何从.htaccess重定向中排除具有特定参数的查询字符串

vsdwdz23  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(126)

我有一个WordPress站点,我放弃查询字符串与以下规则:

RewriteCond %{QUERY_STRING} .

RewriteRule ^ %{REQUEST_URI} [QSD,R=301,L]

上面的规则工作正常,但我想排除一些在查询字符串中带有特定参数的URL。我尝试在上面的两个规则之间插入以下规则,但我显然遗漏了一些东西,排除不起作用:

RewriteCond %{QUERY_STRING} !^/?post_type=project

RewriteCond %{THE_REQUEST} !^/?post_type=project&p=14507&et_fb=1&PageSpeed=off

RewriteCond %{REQUEST_URI} !^/?post_type=project

RewriteCond %{REQUEST_URI} !^/?post_type=project$

我的目标是排除包含以下部分或全部参数的URL:

post_type=project

et_fb=1

PageSpeed=off
x8diyxa7

x8diyxa71#

您可以在RewriteEngine On行的正下方(以及前端控制器WP规则的上方)使用此规则:

RewriteEngine On

RewriteCond %{QUERY_STRING} !(?:^|&)post_type=project(?:&|$) [NC,OR]
RewriteCond %{QUERY_STRING} !(?:^|&)et_fb=1(?:&|$) [NC,OR]
RewriteCond %{QUERY_STRING} !(?:^|&)PageSpeed=off(?:&|$) [NC]
RewriteCond %{QUERY_STRING} .
RewriteRule ^ %{REQUEST_URI} [QSD,R=301,L,NE]

# more rule below this line

我使用3个单独的RewriteCond,以便能够在查询字符串中的任何位置匹配这些查询参数(注意OR子句的使用)。

相关问题