URL Rewrite IIS: HTTP to HTTPS [дубликат]

моя настройка для сервера debian. У меня возникла проблема, когда несколько пакетов содержат одно и то же имя. например apache2. так это было моим решением.

function _apt_install() {
    apt-get install -y $1 > /dev/null
}

function _apt_install_norecommends() {
    apt-get install -y --no-install-recommends $1 > /dev/null
}
function _apt_available() {
    if [ `apt-cache search $1 | grep -o "$1" | uniq | wc -l` = "1" ]; then
        echo "Package is available : $1"
        PACKAGE_INSTALL="1"
    else
        echo "Package $1 is NOT available for install"
        echo  "We can not continue without this package..."
        echo  "Exitting now.."
        exit 0
    fi
}
function _package_install {
    _apt_available $1
    if [ "${PACKAGE_INSTALL}" = "1" ]; then
        if [ "$(dpkg-query -l $1 | tail -n1 | cut -c1-2)" = "ii" ]; then
             echo  "package is already_installed: $1"
        else
            echo  "installing package : $1, please wait.."
            _apt_install $1
            sleep 0.5
        fi
    fi
}

function _package_install_no_recommends {
    _apt_available $1
    if [ "${PACKAGE_INSTALL}" = "1" ]; then
        if [ "$(dpkg-query -l $1 | tail -n1 | cut -c1-2)" = "ii" ]; then
             echo  "package is already_installed: $1"
        else
            echo  "installing package : $1, please wait.."
            _apt_install_norecommends $1
            sleep 0.5
        fi
    fi
}
144
задан Ohad Schneider 2 April 2016 в 16:30
поделиться

5 ответов

Я думаю, что самый чистый способ описан как здесь, на IIS-aid.com . Это только web.config, и поэтому, если вы меняете сервер, вам не нужно помнить о всех шагах, которые вы выполнили с настраиваемой страницей ошибок 403.4 или другими специальными разрешениями, это просто работает.

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="HTTP to HTTPS redirect" stopProcessing="true">
          <match url="(.*)" />
            <conditions>
              <add input="{HTTPS}" pattern="off" ignoreCase="true" />
            </conditions>
            <action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/{R:1}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>
178
ответ дан toxaq 27 August 2018 в 08:15
поделиться

Чистый способ изменяет только схему URL из http -> https и оставляет все остальное эквивалентным. Он должен быть на стороне сервера, чтобы не было проблем с браузером.

JPPinto.com имеет пошаговые инструкции о том, как это делается, за исключением того, что они используют javascript ( HttpRedirect.htm) вместо перенаправления на стороне сервера. По какой-то причине я не мог заставить IE запускать javascript, если вы включили «Показать дружественные сообщения об ошибках HTTP», который включен по умолчанию. Другое дело в сценарии заключается в том, что перенаправление на путь не работает даже в FF или Chrome. Сценарий всегда перенаправляется на root. (Возможно, я что-то пропустил, потому что он должен перенаправляться на путь.)

По этим причинам я использовал страницу ASP для перенаправления. Недостатком является то, что для этого требуется, чтобы на сервере был включен классический ASP.

OpsanBlog имеет сценарий ASP и инструкции , которые хорошо работают с IIS6.

У меня было несколько проблем с использованием этого метода с IIS7. Проблемы с пользовательским интерфейсом в основном связаны с тем, что IIS7 позволяет пропустить что-то.

  • Сначала вам нужно установить ASP как роль роли веб-сервера.
  • Во-вторых, использование виртуального каталога не работало должным образом в IIS7, и я не пытался его отлаживать. Вместо этого я помещаю файл в корневую папку сайта и использую url '/SSLRedirect.asp' на странице ошибок 403.4, чтобы ссылаться на него.
  • Последняя, ​​самая сложная часть, вы НЕ должны применять SSL для SSLRedirect.asp. В противном случае вы получите ошибку 403.4. Для этого вы выбираете файл в IIS7 «Просмотр содержимого» и переключаетесь на «Вид функций», чтобы вы могли редактировать настройки SSL для одного файла и отключать флажок «Требовать SSL».

Менеджер IIS должен показать имя файла в заголовке.

5
ответ дан abatishchev 27 August 2018 в 08:15
поделиться

Самое легкое и чистое решение, которое я нашел, это

  1. В настройках SSL -> требуется SSL
  2. На страницах ошибок -> Ошибка 403.4 -> Перенаправление на HTTPS-сайт
  3. На страницах ошибок -> Изменить настройки параметров ... -> Установить подробные ошибки для локальных запросов и настраиваемых страниц ошибок для удаленного запроса

. Преимущество в том, что он не требует дополнительных строк кода. Недостатком является то, что он перенаправляет вас на абсолютный URL.

13
ответ дан ColacX 27 August 2018 в 08:15
поделиться

Я думаю, что «чисто» вы имеете в виду как с перенаправлением 300. Конфигурация для большого количества серверов & amp; языки здесь .

-4
ответ дан slipsec 27 August 2018 в 08:15
поделиться

Global.asax

protected void Application_BeginRequest()
{
if (!Context.Request.Url.AbsoluteUri.Contains("localhost") && !Context.Request.IsSecureConnection)
Response.Redirect(Context.Request.Url.ToString().Replace("http:", "https:"));
}
0
ответ дан Toolkit 27 August 2018 в 08:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: