代码之家  ›  专栏  ›  技术社区  ›  David Heggie

强制重定向到除一个页面以外的所有页面的SSL

  •  1
  • David Heggie  · 技术社区  · 16 年前

    我正在尝试使用Apache2的mod重写来强制SSL连接到一个网站。到目前为止,该网站的 <VirtualHost> 条目:

    RewriteEngine On
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [QSA,NC,R,L]
    

    这很好地工作,并且重定向所有东西,这是我想要的。

    但是,该站点上有一个特定的页面使用了GoogleMapsAPI,它不能通过SSL使用,因此会在浏览器中触发混合内容警告。所以,我想要这个,只映射页面不重定向,并使用普通的非SSL连接。

    我不希望在其上使用SSL的URL具有 /thing/add/{ID}/page3 哪里 {ID} 是一个数值。

    这有可能吗?

    1 回复  |  直到 16 年前
        1
  •  2
  •   Piskvor left the building Rohit Kumar    16 年前
    RewriteEngine On
    
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule ^thing/add/\d+/page3$ - [L]
    
    RewriteCond %{SERVER_PORT} ^443$
    RewriteRule ^(thing/add/\d+/page3) $ http://%{HTTP_HOST}/$1 [QSA,NC,R,L]
    
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [QSA,NC,R,L]
    

    规则从上到下进行处理;如果不在SSL上,则第一个规则停止重写映射页;如果通过SSL访问,则第二个规则(可选)将这些页重定向到不安全的页;对于其他所有规则,则应用旧规则。