我需要管理查询字符串中的一些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]
全都是!