微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在使用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 。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐