【问题标题】:mod_rewrite only on GETmod_rewrite 仅在 GET 上
【发布时间】:2012-01-03 14:26:04
【问题描述】:

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

在深入研究一千行缩小的 3rd 方 javascript 之前,我想知道是否可以使用 mod_rewrite 自动应用查询字符串。

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

现在,这可以正常工作,除非有时会发布所有数据,所以我需要一个RewriteCond,因此该规则只会在GET 请求上触发,而不是POST 请求。

这可能吗?

【问题讨论】:

    标签: apache mod-rewrite post


    【解决方案1】:

    我建议明确并仅在请求方法为 GET 时触发 RewriteRule,而不是在它不是 POST 时触发,因为还有许多其他方法。所以你的重写条件可能是这样的:

    RewriteCond %{REQUEST_METHOD}  =GET
    
    RewriteRule    ^index\.php$  index.php?module=Home&action=index
    

    【讨论】:

      【解决方案2】:

      添加这个条件...

      RewriteCond %{REQUEST_METHOD} !POST
      

      ...不匹配 POST 请求。

      【讨论】:

      • 我知道它必须是这样的。我翻阅了文档,却空手而归。感谢您的帮助!
      【解决方案3】:

      来自the docs

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

        ...

      连接和请求:
      ...
      REQUEST_METHOD

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

      【讨论】:

        【解决方案4】:

        这适用于 GET 请求...

        RewriteCond %{REQUEST_METHOD} ^GET [NC]
        

        【讨论】:

          猜你喜欢
          • 2013-07-07
          • 1970-01-01
          • 2014-01-13
          • 2011-05-19
          • 1970-01-01
          • 1970-01-01
          • 2010-12-12
          • 2017-04-08
          • 2012-02-20
          相关资源
          最近更新 更多