重写规则以在附加查询参数后重定向没有查询参数的 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]
希望对您有所帮助。
我需要检查文件夹中的 UIRI 是否包含任何查询参数,如果没有,添加查询参数并在浏览器中重定向 uri,同时使用 Apache 重写规则。对于所有以 /abc/def/xyz/
开头的 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]
希望对您有所帮助。