htaccess (https a http)

esta es otra pregunta .htaccess Y ya hice mi reseña literaria. Agradecería cualquier ayuda.

Requisitos:

Forzar HTTPS solo por unas pocas URLs.El navegador no debería decirpágina parcialmente encriptada para las páginas SSL.

Estoy usando CodeIgnitor y modifiqué elbase_url enconfig.php a:

$config['base_url'] = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on') ? 'https://' : 'http://' ;
$config['base_url'] .= $_SERVER['HTTP_HOST'];
$config['base_url'] .= preg_replace('@/+$@','',dirname($_SERVER['SCRIPT_NAME'])).'/';

Por lo tanto, si se accede a una URL conhttps: // todos los enlaces que contiene también estarían en HTTPS, esto es para evitar el problema de "página parcialmente encriptada".

Comencé con el siguiente código htaccess:

RewriteCond %{HTTPS} !on
RewriteRule ^(.*)/(abc|xyz|pqr)(.*)$ https://%{HTTP_HOST}/cart/Forzar HTTPS solo por unas pocas URLs.3 [R=301,NC,L]

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^(.*)/(abc|xyz|pqr)(.*)$ [NC]
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,NC,L]

Con esto cualquier URL tienea B C, xyz opqr será redirigido a HTTPS y cualquier URL que no lo tenga será forzada a HTTP.

Esto funcionó bien, el único problema con esto es que no puede evitar el problema de "página parcialmente encriptada". Por ejemplo si voy por urlhttp://www.example.com/abc/index.php, será redirigido ahttps://www.example.com/abc/index.php. Pero los enlaces en esta página dicenhttps://www.example.com/images/logo.png, se cambiará a HTTP debido a la última regla de reescritura. De este modo la página queda parcialmente encriptada.

También traté de añadirhttp_referer Compruebe esto para resolver este problema, pero obviamente eso no lo solucionará. Porque cualquier clic que provenga de una página HTTPS nunca se convertiría a HTTP.

RewriteCond %{HTTPS} !on
RewriteRule ^(.*)/(abc|xyz|pqr)(.*)$ https://%{HTTP_HOST}/cart/Forzar HTTPS solo por unas pocas URLs.3 [R=301,NC,L]

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_REFERER} !^(https)(.*)$
RewriteCond %{REQUEST_URI} !^(.*)/(abc|xyz|pqr)(.*)$ [NC]
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,NC,L]

Solo quiero saber si hay un mejor enfoque disponible para este problema simple o si lo estoy haciendo de manera incorrecta. ¿El uso de ganchos CI en lugar de .htaccess resolverá esto?

Gracias por adelantado

Respuestas a la pregunta(2)

Su respuesta a la pregunta