我在尝试从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的答案,但他们没有工作。
我需要这样做的原因是因为我们的应用程序防火墙正在寻找" ID"在url中,如果之后出现任何非字母数字字符,则会阻止该请求。防火墙是在Apache请求命中服务器后实现的。
希望有更多Apache Rewrite规则经验的人可以帮助我。提前谢谢。
答案 0 :(得分:5)
要从查询字符串中删除尾部斜杠,您可以使用此规则:
RewriteCond %{QUERY_STRING} ^(.+)/$
RewriteRule ^ %{REQUEST_URI}?%1 [R=301,L,NE]
确保这是RewriteEngine On
行以下.htaccess中的第一条规则。