重写规则以在附加查询参数后重定向没有查询参数的 URI

Rewrite rule to redirect a URI without a query param after appending a query param

我需要检查文件夹中的 UIRI 是否包含任何查询参数,如果没有,添加查询参数并在浏览器中重定向 uri,同时使用 Apache 重写规则。对于所有以 /abc/def/xyz/ 开头的 url,如果还没有查询参数

,则 url 应该附加 ?v=2

例如/abc/def/xyz/folder/test.pdf应该变成/abc/def/xyz/folder/test.pdf?v=2

但是/abc/def/xyz/folder1/test.pdf?v=3应该保持不变。

我能够使用下面的方法添加查询参数,但它会导致无限重定向。这就是为什么我需要选择性重定向

RewriteRule ^abc/def/xyz/(.*) /abc/def/xyz/?v=2 [L,R=301]

以下不会将浏览器 URL 重定向到具有查询参数的新 URI:

RewriteRule ^abc/def/xyz/(.*) /abc/def/xyz/?v=2 [PT,L]

您可以使用 RewriteCond 来检查查询字符串。我想以下应该可以解决问题。如果有可用的查询字符串,它将跳过该规则。否则,它将附加查询字符串 v=2

RewriteCond %{QUERY_STRING} ^$
RewriteRule ^abc/def/xyz/(.*)$ /abc/def/xyz/?v=2 [L, R=301]

希望对您有所帮助。