Kompx.com or Compmiscellanea.com

Редирект с HTTP на HTTPS в .htaccess

Веб-серверы : Apache + nginx

Редирект с HTTP на HTTPS в случае, когда веб-сервер, выдающий страницы, находится за обратным прокси-сервером или балансировщиком нагрузки.

Веб-серверы: Apache + nginx. Поддержка SSL включена. SSL-сертификат приобретен, одобрен и установлен. То есть, все настроено и работает. Так что осталось только сделать редирект с HTTP на HTTPS. Директивы для файла .htaccess:

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\. [NC]

RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

RewriteCond %{HTTP:X_FORWARDED_PROTO} !https [NC]

RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Редирект с HTTP на HTTPS

-- Включить работу механизма преобразования:

RewriteEngine On

-- Если доменное имя без www:

RewriteCond %{HTTP_HOST} !^www\. [NC]

-- Тогда заменить его на домен с www:

RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

-- Если HTTPS отсутствует:

RewriteCond %{HTTP:X_FORWARDED_PROTO} !https [NC]

-- Тогда заменить домен без HTTPS доменом с HTTPS:

RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Примечания

1. X_FORWARDED_PROTO может называться X-Forwarded-Proto или еще как-нибудь иначе. От обратного прокси-сервера или балансировщика нагрузки надо получить сведения о том первоначальном запросе, который он получает. Обратные прокси-сервера или балансировщики нагрузки могут предоставлять веб-серверу эту информацию. Может быть отправлен заголовок X_FORWARDED_PROTO или X-Forwarded-Proto или называемый как-то иначе, содержащий название протокола (HTTP или HTTPS). Так обычно. Но не всегда. Поэтому в каком-то числе случаев как именно получить название протокола возможно придется выяснять экспериментальным путем.

2. Другим вариантом может быть просто установить переменную среды (если для данного сервера это возможно):

SetEnvIf X_FORWARDED_PROTO https HTTPS=on

Тогда директивы для файла .htaccess будут такими:

RewriteEngine On

SetEnvIf X_FORWARDED_PROTO https HTTPS=on

RewriteCond %{HTTP_HOST} !^www\. [NC]

RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

RewriteCond %{HTTP:HTTPS} !on [NV]

RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

3. Документация Apache Module mod_rewrite (in English): http://httpd.apache.org/docs/current/mod/mod_rewrite.html


Aliosque subditos et thema

 

JavaScript submit form

 

Обработка формы с помощью JavaScript. Выпадающий список (form + select + несколько option) обрабатывается без использования кнопки submit. Пример: --- Выбрать страницу --- Linux Windows DOS HTML / XHTML. Code: <form action="action.php" method="post"> <select name="page" required="required" onchange="this.form.submit()"> <option value="" selected="selected" disabled="disabled"> --- Выбрать страницу --- </option> <option value="http://www.kompx.com/ru/os/linux-1.htm">Linux</option> <option value="http://www.kompx.com/ru/os/windows-1.htm">Windows</option> <option value="http://www.kompx.com/ru/os/dos-1.htm">DOS</option> </select> <noscript><input type="submit" value="Submit" /></noscript> </form> Когда в выпадающем списке выбирается одна из опций, состояние формы изменяется. Так что происходит событие onchange и запускается JavaScript в onchange: процесс обработки формы и передачи данных инициируется скриптом, а не кликом на кнопку submit, которая отсутствует. Для работы с action формы назначается тот или иной скрипт [ 3 ], выполняемый на сервере. Скрипт принимает то, что отсылает форма и обрабатывает принятое. В данном примере используется PHP скрипт в action.php: <?php if (isset($_POST["page"])) {     header("Location: $_POST[page]");     exit; } else {     echo "Ничего не выбрано"; } $_POST представляет собой массив из переменных, передаваемых данному скрипту методом HTTP POST. Так что $_POST[page] содержит значение атрибута value в одном из option внутри select. То есть, URL. Он передается от формы к PHP скрипту, а скрипт перенаправляет браузер на выбранный URL / страницу. HTML код <noscript><input type="submit" value="Submit" /></noscript> присутствует в форме на случай, если JavaScript отключен. Тогда появится кнопка submit и форма все равно останется пригодной к использованию. [ 1 ] А так же в Netscape 3.04+, Mozilla 0.6+. [ 2 ] А так же в Netscape 3.04+, Mozilla 0.6+. [ 3 ] Если используется CMS, для работы с action формы может применяться один из ее собственных инструментов.

Границы HTML таблиц без CSS

 

Пример n.1:   Границы HTML таблиц без CSS   cellspacing="2"   bgcolor="#ff6600" HTML / XHTML. Код: <table width="100%" cellspacing="2" cellpadding="0" border="0" align="center" bgcolor="#ff6600"> <tr bgcolor="#ffffff"> <td width="33%" height="67">&nbsp;</td> <td width="34%">Границы HTML таблиц без CSS</td> <td width="33%">&nbsp;</td> </tr> <tr bgcolor="#ffffff"> <td height="67">cellspacing="2"</td> <td>&nbsp;</td> <td>bgcolor="#ff6600"</td> </tr> </table> Пример n.2:   Границы HTML таблиц без CSS   cellspacing="8"   bgcolor="#999999" HTML / XHTML. Код: <table width="100%" cellspacing="8" cellpadding="0" border="0" align="center" bgcolor="#999999"> <tr bgcolor="#ffffff"> <td width="33%" height="67">&nbsp;</td> <td width="34%">Границы HTML таблиц без CSS</td> <td width="33%">&nbsp;</td> </tr> <tr bgcolor="#ffffff"> <td height="67">cellspacing="8"</td> <td>&nbsp;</td> <td>bgcolor="#999999"</td> </tr> </table> Пример n.3 - для Netscape 3.04-6.0, Mozilla 0.6-0.92 и Arachne.