我正在尝试使用apache2的mod_rewrite强制SSL连接到网站。到目前为止,它在网站的<VirtualHost>
条目中正常运行:
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [QSA,NC,R,L]
这很好用,重定向一切,这就是我想要的。
但是,该网站上有一个使用Google地图API的特定页面,该地图API无法通过SSL提供,因此会在浏览器中触发混合内容警告。所以,我想要这个,仅限地图的页面不要重定向,并使用普通的非ssl连接。
我不希望使用SSL的网址格式为/thing/add/{ID}/page3
,其中{ID}
是数字值。
这可能吗?
答案 0 :(得分:2)
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访问,第二个(可选)将这些页面重定向到非安全;除此之外,旧规则适用。