Apache 从查询字符串中删除尾部斜杠

Apache 从查询字符串中删除尾部斜杠,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,在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}}?

在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]
但它破坏了网站。我一直在寻找这样做的方法,但还没有找到任何解决方案。我试着从他们那里得到答案,但都不起作用

我之所以需要这样做,是因为我们的应用程序防火墙在url中查找“ID”,如果后面有任何非字母数字字符,它就会阻止请求。防火墙是在Apache请求到达服务器后实现的


希望对Apache重写规则有更多经验的人能帮助我。提前感谢。

要从查询字符串中删除尾随斜杠,可以使用以下规则:

RewriteCond %{QUERY_STRING} ^(.+)/$
RewriteRule ^ %{REQUEST_URI}?%1 [R=301,L,NE]
确保这是.htaccess中的第一条规则,位于
行的
重写引擎下方