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