从查询字符串 Apache 中删除尾部斜杠
Posted
技术标签:
【中文标题】从查询字符串 Apache 中删除尾部斜杠【英文标题】:Remove trailing slashes from Query String Apache 【发布时间】:2016-10-19 06:20:23 【问题描述】:我在尝试从 apache 中的查询字符串末尾删除尾部斜杠时遇到问题。
我现在有以下重写规则来使 URL 和查询字符串全部小写:
RewriteEngine On
RewriteMap lc int:tolower
RewriteCond %REQUEST_URI ^[^A-Z]*[A-Z].* [OR]
RewriteCond %QUERY_STRING ^[^A-Z]*[A-Z].*
RewriteRule ^ $lc:%REQUEST_URI?$lc:%QUERY_STRING [L,R=301]
我已尝试添加:
RewriteCond %QUERY_STRING (.+)/$
RewriteRule ^ %1 [R=301,L]
但它破坏了网站。我一直在寻找一种方法来做到这一点,但还没有提出任何解决方案。我尝试了this post 的答案,但没有奏效。
我需要这样做的原因是因为我们的应用程序防火墙在 url 中查找“ID”,如果后面有任何非字母数字字符,那么它会阻止请求。防火墙是在 Apache 请求到达服务器后实施的。
希望对 Apache Rewrite 规则有更多经验的人可以帮助我。提前致谢。
【问题讨论】:
【参考方案1】:要从查询字符串中删除尾部斜杠,您可以使用以下规则:
RewriteCond %QUERY_STRING ^(.+)/$
RewriteRule ^ %REQUEST_URI?%1 [R=301,L,NE]
确保这是您的 .htaccess 中RewriteEngine On
行下方的第一条规则。
【讨论】:
以上是关于从查询字符串 Apache 中删除尾部斜杠的主要内容,如果未能解决你的问题,请参考以下文章