在使用htaccess的URL重写中编码特殊字符

我有一个重写规则如下,它正在工作:

RewriteRule area/(.*) listing.PHP?area=$1

但是当我想用%29的时候,但是当我把它改写成如下时,我得到了404错误

RewriteRule area/something%29/(.*)/ listing.PHP?area=$1

以%29转义%29也无效。

使用htaccess修复拼写错误的url

密码保护Flask应用程序中的一个网页

在apache中检查移动设备并redirect到移动网站

为什么Apache的RewriteRule会显示本地path?

redirect到https和www在Apache中的单一redirect

在重写.htaccess中保留查询string

友好的URL空格连字符和大写字母小写

htaccess删除.PHP,.html和尾部斜杠

.htaccess重写规则强制将httpsredirect到http

如何将这个Apache重写转换成Nginx

Apache% – 在尝试应用重写规则之前解析url路径。 所以你不应该在你的RewriteRule中使用%-encoding。 只要使用正常的字符。

所以在你的情况下,你应该只使用) 。 )但是在正则表达式中是一个特殊的字符,所以你应该通过在前面添加一个斜杠来以RegEx方式逃避那些。 所以它会成为) 。

你的规则应该成为:

RewriteRule area/something)/(.*)/ listing.PHP?area=$1

您要重写的网址无效,因为%29只能在Querystring中允许,而不能在URL中允许。 你需要将%25%(而不是反斜杠)转义出来,所以得到的表达式应该是…%2529 – 这应该起作用。

有关更深入的信息,请查看RFC2396 。

相关文章

可以认为OpenFeign是Feign的增强版,不同的是OpenFeign支持S...
为进一步规范小程序交易生态、提升用户购物体验、满足用户在...
云原生之使用Docker部署Dashdot服务器仪表盘
本文主要描述TensorFlow之回归模型的基本原理
1.漏洞描述Apache Druid 是一个集时间序列数据库、数据仓库和...
内部类(当作类中的一个普通成员变量,只不过此成员变量是cl...