htaccess (https to http)

это еще один вопрос .htaccess. И я уже сделал свой обзор литературы. Буду признателен за любую помощь.

Требования:

Принудительно использовать HTTPS только для нескольких URL.Браузер не долженсказатьчастично зашифрованная страница для страниц SSL.

Я использую CodeIgnitor и настроилbase_url вconfig.php чтобы:

$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'])).'/';

Таким образом, если URL доступен сhttps: // все ссылки, содержащиеся в нем, также будут на HTTPS, этого следует избегать "частично зашифрованная страница » вопрос.

Я начал со следующего кода htaccess:

RewriteCond %{HTTPS} !on
RewriteRule ^(.*)/(abc|xyz|pqr)(.*)$ https://%{HTTP_HOST}/cart/$2$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]

При этом любой URL, имеющийазбука,хуг или жеPQR будет перенаправлен на HTTPS, и любой URL, не имеющий его, будет возвращен к HTTP.

Это сработало хорошо, единственная проблема в том, что это не в состоянии избежать "частично зашифрованная страница » вопрос. Например, если я иду по URLhttp://www.example.com/abc/index.php, он будет перенаправлен наhttps://www.example.com/abc/index.php, Но ссылки на этой странице говорятhttps://www.example.com/images/logo.png, будет изменен на HTTP из-за последнего правила перезаписи. Тем самым делая страницу частично зашифрованной.

Я также попытался добавитьHTTP_REFERER проверьте, как это, чтобы решить эту проблему, но, очевидно, что не решит проблему. Потому что любые клики со страницы HTTPS никогда не будут преобразованы в HTTP.

RewriteCond %{HTTPS} !on
RewriteRule ^(.*)/(abc|xyz|pqr)(.*)$ https://%{HTTP_HOST}/cart/$2$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]

Просто хочу знать, есть лиs лучший подход к этой простой проблеме или я делаю это неправильно. Решит ли это использование CI-хуков вместо .htaccess?

заранее спасибо

Ответы на вопрос(2)

Ваш ответ на вопрос