mod_rewrite只在GET上

时间:2011-11-22 06:23:35

标签: apache mod-rewrite post

这是一个远景,但我希望找到一个简单的解决方法,以解决一个奇怪的错误,只有在应用程序省略/推断查询字符串时才会显示。

在深入挖掘千行第三方javascript之前,我想知道是否可以使用mod_rewrite自动应用查询字符串。

RewriteRule    ^index\.php$  index.php?module=Home&action=index

现在,这样可以正常工作,但有时所有数据都会被POST,所以我需要RewriteCond,因此该规则只会触发GET个请求,而不会触发POST个请求。

这可能吗?

4 个答案:

答案 0 :(得分:13)

我建议明确并且只在请求方法是GET时才触发RewriteRule,而不是在没有POST时,因为还有很多其他方法。所以你的重写条件可能如下所示:

RewriteCond %{REQUEST_METHOD}  =GET

RewriteRule    ^index\.php$  index.php?module=Home&action=index

答案 1 :(得分:12)

添加此条件......

RewriteCond %{REQUEST_METHOD} !POST

...与POST次请求不匹配。

答案 2 :(得分:3)

来自the docs

  
      
  • 服务器变量:这些是%{ NAME_OF_VARIABLE }形式的变量,其中NAME_OF_VARIABLE可以是从以下列表中获取的字符串:

         

    ...

  •   
     

连接&请求:
    ...
  REQUEST_METHOD

所以,是的。将RewriteCond与该服务器变量一起使用。

答案 3 :(得分:0)

这对于GET请求很好用...

RewriteCond %{REQUEST_METHOD} ^GET [NC]