301 htaccess 目标中有 %20 URL

301 htaccess with %20 in target URL

我需要管理查询字符串中的一些 URL。登陆 URL 包含 space (%20)。 我写了这个:

RewriteCond %{QUERY_STRING} ^orderby=([0-9]+)&pagenumber=([0-9]+)$
RewriteRule ^[OLD-SLUG]$ https://www.domain-site.it/Content/Images/uploaded/[TEXT-01]%20[TEXT-02]%20[TEXT-03].pdf? [R=301,L]

但结果是 URL 重定向到:

https://www.domain-site.it/Content/Images/uploaded/[TEXT-01]50[TEXT-02]50[TEXT-03].pdf

怎么了?

谢谢大家

%N(0 <= N <= 9)是对前面RewriteCond的捕获组进行反向引用的语法。

所以 %2 指的是您用 pagenumber=([0-9]+) 捕获的内容。

您需要使用反斜杠对百分号字符进行转义,因为它的意思是字面意思。

RewriteRule ^[OLD-SLUG]$ .../[TEXT-01]\%20[TEXT-02]\%20[TEXT-03].pdf? [R=301,L]

我是这样解决的:

RewriteCond %{THE_REQUEST} ^(\S*)\s/(\S*) [NC]
RewriteCond %{QUERY_STRING} ^orderby=([0-9]+)&pagenumber=([0-9]+)$
RewriteRule ^old-slug$ https://www.domain-site.it/Content/Images/uploaded/[TEXT-01]\%20[TEXT-02]\%20[TEXT-03].pdf? [R=301,L,NE]

谢谢大家!