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?
заранее спасибо