Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Codeigniter, htaccess и HTTPS  (Прочитано 2800 раз)
0 Пользователей и 1 Гость смотрят эту тему.
BlackStar
Постоялец

ua
Offline Offline
Пол: Мужской

WWW
« : 18-02-2014 11:26 » 

Имеется сайт на Codeigniter, где нужно пару страниц поместить под HTTPS. Я перепробовал все варианты, который смог нагуглить, но ни один не увенчался успехом — сайт вообще никак не реагирует.

Пробую сделать приблизительно так:

Код:
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} /payment
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}

При чем, что весь сайт закрыть HTTPS-ом получается легко:

Код:
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}

Но отдельную страницу — просто никак!  А черт его знает...  Сервер вообще игнорирует это правило и выводит всё по HTTP, как ни в чем ни бывало.

Урл для HTTPS такой:

domain.com/payment/buyproduct

Хуже всего еще и то, что потом, при выходе с этой страницы, HTTPS должен автоматически поменяться снова на HTTP. Дело в том, что функция Codeigniter-a base_url() выводит урл вместе с протоколом и если на страницу зашли по HTTPS, то и все ссылки становятся тоже защищенными, что неприемлемо.
А для того, чтобы обойти всё это дело в коде, надо запиливать огромный костыль на весь проект, чтобы выводить в нужных местах ссылки с нужным протоколом — это архигемор и хотелось бы всё решить с помощью htaccess.

Исходный .htaccess выглядит таким образом:

Код:
RewriteEngine on

RewriteCond $1 !^(index\.php|images|themes|robots\.txt)

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.php [L]

#в этом месте я пытаюсь добавить правила для HTTPS

Он убирает index.php из урлов Codeigniter-а. Может именно из-за этого не получается финт с HTTPS-ом? Я не знаток htacces, поэтому я вообще не понимаю, как его настраивать. Помогите, пожалуйста.

P.S.: Только, прошу. не надо предлагать помещать весь сайт под HTTPS. Задача стоит вполне конкретная. Надо защитить всего пару страниц.
Записан

Программирование на заказ   C/C++, Delphi, PHP, javascript
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 18-02-2014 11:57 » 

Цитата
#в этом месте я пытаюсь добавить правила для HTTPS

Эти правила должны быть в начале.

потом
RewriteCond %{REQUEST_URI} /payment
Зачем, если  можно

RewriteRule payment$ https://%{HTTP_HOST}/payment
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
BlackStar
Постоялец

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 18-02-2014 14:48 » 

Попробовал вот так:

Код:
RewriteEngine on

RewriteCond $1 !^(index\.php|images|themes|robots\.txt)

RewriteRule payment$ https://%{HTTP_HOST}/payment

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

#RewriteRule ^(.*)$ /index.php/$1 [L]

RewriteRule . /index.php [L]

Никакой реакции. Сайт работает нормально, HTTPS на нужной странице не включается.
Записан

Программирование на заказ   C/C++, Delphi, PHP, javascript
BlackStar
Постоялец

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 18-02-2014 14:57 » 

Ух ты! Вот так получилось!

Код:
RewriteEngine on

RewriteCond $1 !^(index\.php|images|themes|robots\.txt|google2ca45ccf7e3fdbed\.html|sitemap\.xml)

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} payment/buyproduct
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.php [L]

Правда, почему-то данные формы с HTTP страницы не пришли на обработчик HTTPS... Ну, ладно. Это надо еще разобраться.

Теперь осталось сделать так, чтобы, при переходе с этой страницы, протокол снова менялся на HTTP.
Записан

Программирование на заказ   C/C++, Delphi, PHP, javascript
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines