2016-06-17 74 views
2

我遇到了一个问题,试图从apache中查询字符串的末尾删除尾部斜线。从查询字符串中删除尾部斜杠Apache

我已经制定了以下重写规则,现在让网址和查询字符串全部小写:

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规则经验的人可以帮助我。提前致谢。

回答

4

要删除的查询字符串结尾的斜线,你可以使用此规则:

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

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

+1

谢谢你的工作完美! – Yamaha32088