从查询字符串Apache

时间:2016-06-17 12:02:22

标签: 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]

我试图添加:

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

但它破坏了网站。我一直在寻找一种方法来做到这一点,但还没有提出任何解决方案。我尝试了this post的答案,但他们没有工作。

我需要这样做的原因是因为我们的应用程序防火墙正在寻找" ID"在url中,如果之后出现任何非字母数字字符,则会阻止该请求。防火墙是在Apache请求命中服务器后实现的。

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

1 个答案:

答案 0 :(得分:5)

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

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

确保这是RewriteEngine On行以下.htaccess中的第一条规则。