我需要执行相当于以下内容的重写:
RewriteRule ^/this%20file.pdf http://www.example.com/我该怎么处理%20?
我试过了
RewriteRule ^/this\%20file.pdf http://www.example.com/和
RewriteRule ^/this(\s|%20)file.pdf http://www.example.com/但这些都不起作用。
该网站是Wordpress网络的一部分,因此它没有自己的目录或子域,我可以在其中放置包含重定向的.htaccess文件;它是一个具有域映射的虚拟子域。因此,Wordpress .htaccess重写程序的前一步是
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]发布于 2012-12-30 06:58:35
您不需要在mod_rewrite参数中使用百分比编码/十六进制,因为mod_rewrite将编码特殊字符(?、#、&等)。默认情况下。若要在重写模式中写入空格,请使用\s或使用反斜杠(\)转义空格。空间是否被编码为%20或+取决于它是查询字符串的一部分还是URI。
所以你的规则应该是这样的:
RewriteRule ^/this\ file.pdf http://www.example.com/或者:
RewriteRule ^/this\sfile.pdf http://www.example.com/如果您确实希望手动指定URI编码,则需要使用NE (noescape)标志告诉mod_rewrite不要转义特殊字符。
否则,/this%20file.pdf将被视为/this%2520file.pdf,因为%将被编码为%25。
发布于 2022-01-04 18:10:19
RewriteRule ^/此%20 file.pdf http://www.example.com/
由RewriteRule模式(regex)匹配的URL路径已被%解码。因此,匹配一个编码的空间(即。%20)在请求中,您将匹配regex中的文字空间。
(旁白:如果您试图在这里匹配一个文字%20,那么您将匹配一个双重编码的空间,即。%2520,在请求的URL-路径中。)
正如@Lèsemajesté答案中提到的那样,你可以在regex中通过反斜杠来实现这一点\,或者使用\s简写字符类来匹配任何空白字符。
或者,您可以简单地用双引号包围参数,并使用一个字面意义上的未转义空格。例如:
RewriteRule "^/?this file\.pdf" http://www.example.com/当参数包含空格时,双引号是Apache机制,因为空格是Apache配置文件中的参数分隔符。
注意:由于我们在这里处理的是.htaccess,所以您也应该删除RewriteRule模式匹配的URL路径上的斜杠前缀(或者像我前面所做的那样)。在目录上下文(即。.htaccess) RewriteRule模式匹配的URL路径不以斜杠开头.
https://webmasters.stackexchange.com/questions/39494
复制相似问题