首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用.htaccess重写%20

如何用.htaccess重写%20
EN

Webmasters Stack Exchange用户
提问于 2012-12-30 06:23:51
回答 2查看 21.6K关注 0票数 7

我需要执行相当于以下内容的重写:

代码语言:javascript
运行
复制
RewriteRule ^/this%20file.pdf http://www.example.com/

我该怎么处理%20?

我试过了

代码语言:javascript
运行
复制
RewriteRule ^/this\%20file.pdf http://www.example.com/

代码语言:javascript
运行
复制
RewriteRule ^/this(\s|%20)file.pdf http://www.example.com/

但这些都不起作用。

该网站是Wordpress网络的一部分,因此它没有自己的目录或子域,我可以在其中放置包含重定向的.htaccess文件;它是一个具有域映射的虚拟子域。因此,Wordpress .htaccess重写程序的前一步是

代码语言:javascript
运行
复制
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
EN

回答 2

Webmasters Stack Exchange用户

发布于 2012-12-30 06:58:35

您不需要在mod_rewrite参数中使用百分比编码/十六进制,因为mod_rewrite将编码特殊字符(?#&等)。默认情况下。若要在重写模式中写入空格,请使用\s或使用反斜杠(\)转义空格。空间是否被编码为%20+取决于它是查询字符串的一部分还是URI。

所以你的规则应该是这样的:

代码语言:javascript
运行
复制
RewriteRule ^/this\ file.pdf http://www.example.com/

或者:

代码语言:javascript
运行
复制
RewriteRule ^/this\sfile.pdf http://www.example.com/

如果您确实希望手动指定URI编码,则需要使用NE (noescape)标志告诉mod_rewrite不要转义特殊字符。

否则,/this%20file.pdf将被视为/this%2520file.pdf,因为%将被编码为%25

票数 11
EN

Webmasters Stack Exchange用户

发布于 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简写字符类来匹配任何空白字符。

或者,您可以简单地用双引号包围参数,并使用一个字面意义上的未转义空格。例如:

代码语言:javascript
运行
复制
RewriteRule "^/?this file\.pdf" http://www.example.com/

当参数包含空格时,双引号是Apache机制,因为空格是Apache配置文件中的参数分隔符。

注意:由于我们在这里处理的是.htaccess,所以您也应该删除RewriteRule模式匹配的URL路径上的斜杠前缀(或者像我前面所做的那样)。在目录上下文(即。.htaccess) RewriteRule模式匹配的URL路径不以斜杠开头.

票数 0
EN
页面原文内容由Webmasters Stack Exchange提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://webmasters.stackexchange.com/questions/39494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档