从Query String Apache中删除尾部斜杠

Yam*_*088 3 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}}?${lc:%{QUERY_STRING}} [L,R=301]
Run Code Online (Sandbox Code Playgroud)

我试图添加:

RewriteCond %{QUERY_STRING} (.+)/$
RewriteRule ^ %1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)

但它破坏了网站.我一直在寻找一种方法来做到这一点,但尚未提出任何解决方案.我试过这篇文章的答案,但他们没有用.

我需要这样做的原因是因为我们的应用程序防火墙在URL中查找"ID",如果之后有任何非字母数字字符,则它会阻止请求.防火墙是在Apache请求到达服务器后实现的.

希望有更多Apache Rewrite规则经验的人可以帮助我.提前致谢.

anu*_*ava 6

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

RewriteCond %{QUERY_STRING} ^(.+)/$
RewriteRule ^ %{REQUEST_URI}?%1 [R=301,L,NE]
Run Code Online (Sandbox Code Playgroud)

确保这是您的.htaccess下面的第一条规则RewriteEngine On.