【问题标题】:Tuckey Filter - https redirectTuckey 过滤器 - https 重定向
【发布时间】:2014-10-05 11:43:30
【问题描述】:

我正在尝试进行从 http 到 https 的 301 重定向。

当我使用这个规则时,我得到一个无限循环重定向到https://localhost/mypage

<rule>
  <name>https redirect</name>
  <condition name="scheme" operator="notequal">^https$</condition>   
  <from>^/(.*)</from>
  <to type="permanent-redirect" last="true">https://localhost/$1</to>
</rule>

当我使用这个时,根本不会发生重定向

<rule>
  <name>https redirect</name>
  <condition name="scheme" operator="equal">^http$</condition>   
  <from>^/(.*)</from>
  <to type="permanent-redirect" last="true">https://localhost/$1</to>
</rule>

由此我猜测我写的方案条件是错误的,但我找不到写规则的正确方法,我尝试了:

<condition name="scheme" operator="equal">^http$</condition> 
<condition name="scheme" operator="equal">http</condition> 

关于为什么这不起作用的任何线索?

【问题讨论】:

    标签: java redirect https http-status-code-301 tuckey-urlrewrite-filter


    【解决方案1】:

    尝试:

    <rule>
      <name>https redirect</name>
      <condition name="scheme" operator="equal">http$</condition>   
      <from>^/(.*)</from>
      <to type="permanent-redirect" last="true">https://localhost/$1</to>
    </rule>
    

    【讨论】:

      【解决方案2】:

      这行得通:

      <rule>
          <name>https redirect</name>
          <condition type="scheme" operator="notequal">https</condition>   
          <from>^/(.*)</from>
          <to type="permanent-redirect" last="true">https://yourdomain.com/$1</to>
      </rule>
      

      【讨论】:

      • 您能否详细说明为什么原始帖子不起作用或您的解决方案解决了哪些具体问题?
      • 我用当前版本 4.0.3 的 Tuckey 重写过滤器测试了上述解决方案,它没有用,但它有效。
      【解决方案3】:

      我想提出以下建议

      <rule>
          <name>https redirect</name>
          <condition name="scheme" operator="equal">^http$</condition>   
          <from>^/(.*)</from>
          <to type="permanent-redirect" last="true">https://localhost/$1</to>
      </rule>
      

      我在Google Groups找到了上述建议。

      但是,我在 java 插件中使用了不同的 Tuckey 过滤器。这是我添加规则的方式。

          //Add https redirect for example.com
          NormalRule myruleredirect3 = new NormalRule();
          myruleredirect3.setFrom("^/(.*)");
          myruleredirect3.setTo("https://example.com/$1");
          myruleredirect3.setToType("permanent-redirect");
      
          //Create a Condition for this rule
          Condition myruleredirect3condition = new Condition();
          myruleredirect3condition.setName("scheme");
          myruleredirect3condition.setType("scheme");
          myruleredirect3condition.setValue("^http$");
          myruleredirect3condition.setOperator("equal");
          myruleredirect3.addCondition(myruleredirect3condition);
      
          //Create a Condition for this rule
          Condition myruleredirect3condition2 = new Condition();
          myruleredirect3condition2.setName("host");
          myruleredirect3condition2.setValue("example.com");
          myruleredirect3condition2.setType("header");
          myruleredirect3condition2.setOperator("equal");
          myruleredirect3.addCondition(myruleredirect3condition2);
      
          //Register the tuckey rewrite rule
          addRewriteRule(myruleredirect3);
      

      【讨论】:

        【解决方案4】:

        你可以这样做

        将属性 scheme 替换为 header ,然后删除属性 last

        <rule>
          <name>https redirect</name>
          <condition name="header" operator="notequal">^https$</condition>   
          <from>^/(.*)</from>
          <to type="permanent-redirect" >https://localhost/$1</to>
        </rule>
        

        如果循环问题仍然存在,也许你应该 查看拦截器/过滤器处理程序中的代码级别 您可能有条件重定向到那里!或在服务器上 域名提供商的级别规则。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-01-05
          • 2013-07-22
          • 2011-12-08
          • 1970-01-01
          • 2015-08-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多