301 htaccess,目标URL中有%20



我需要管理查询字符串中的一些URL。登录URL包含空格(%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]

全都是!

最新更新