【问题标题】:Problems with rewrite module and negation patterns重写模块和否定模式的问题
【发布时间】:2010-07-27 07:36:08
【问题描述】:

我有以下问题:

  • 如果 url 包含关键字 "formulario-" 并且是 http 连接,我想重定向到 https 版本。
  • 如果网址不包含关键字“formulario-”并且是https连接,我想重定向到http 版本。

我尝试了以下 .htaccess 但它不能正常工作:

RewriteEngine On

RewriteCond %{HTTPS} =on
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI}

RewriteCond %{HTTPS} !=on
RewriteRule ^formulario-(.*) http://%{HTTP_HOST}%{REQUEST_URI}

感谢您的帮助!

【问题讨论】:

    标签: apache mod-rewrite https


    【解决方案1】:

    未经测试,但总体思路是:

    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule formulario- https://%{HTTP_HOST}%{REQUEST_URI} [R,L,QSA]
    
    RewriteCond %{HTTPS} on
    RewriteCond %{REQUEST_URI} !formulario-
    RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R,L,QSA]
    

    理论上你不能否定RewriteRule,但你可以否定RewriteCond

    【讨论】:

      【解决方案2】:

      究竟是什么不起作用?

      想到的一件事是:尝试将[L] flag 用于第一条规则,这样如果第一条规则适用,apache 就会停止处理第二条规则。

      我不确定是不是这样。您可能需要一些方法来测试用户之前是否已经被重定向。

      【讨论】:

        猜你喜欢
        • 2012-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-15
        • 2012-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多