Если вы используете IIS 7 и R2, вот руководство, которое работает и наиболее «чисто»
Ujwal Parker
Ответы:
177
Я думаю, что самый чистый способ, как описано здесь, на IIS-aid.com . Это только web.config, и поэтому, если вы меняете сервер, вам не нужно запоминать все шаги, которые вы прошли с пользовательской страницей ошибок 403.4 или другими специальными разрешениями, это просто работает.
<configuration><system.webServer><rewrite><rules><rulename="HTTP to HTTPS redirect"stopProcessing="true"><matchurl="(.*)"/><conditions><addinput="{HTTPS}"pattern="off"ignoreCase="true"/></conditions><actiontype="Redirect"redirectType="Permanent"url="https://{HTTP_HOST}/{R:1}"/></rule></rules></rewrite></system.webServer></configuration>
Это сработало для меня за исключением того, что мне пришлось изменить URL-адрес перенаправления на https: // {HTTP_HOST} {REQUEST_URI}
Эндрю С
6
Это также сработало для меня. Мне пришлось добавить приложение, в котором я работал ... localhost / app1 => http: // {HTTP_HOST} / app1 / {R: 1}
RealSollyM
15
Для тех, у кого еще нет раздела для перезаписи, поместите правила в следующие разделы файла web.config: <system.webServer> <rewrite> <rules> ... </ rules> </ rewrite> </ system .webServer>
raider33
16
убедитесь, что модуль Microsoft URL Rewrite установлен на сервере IIS
Самым простым и чистым решением, которое я нашел, было
В настройках SSL -> требуется SSL
На страницах ошибок -> Ошибка 403.4 -> Перенаправление на сайт HTTPS
На страницах ошибок -> Изменить параметры функций ... -> Установить подробные ошибки для локальных запросов и настраиваемые страницы ошибок для удаленного запроса
Преимущество заключается в том, что он не требует дополнительных строк кода. Недостатком является то, что он перенаправляет вас на абсолютный URL.
работает отлично (на IIS 8.5 / 2012 R2). и не возиться с web.config
schmendrick
Не могли бы вы привести пример этого недостатка? При каких обстоятельствах это произойдет и почему это негативно? Если бы вы могли добавить это к своему ответу, это было бы здорово. Большое спасибо!
Маркос Димитрио
2
@MarcosDimitrio Я не уверен, так как это было так давно. но я полагаю, когда я имел в виду, что он перенаправляет вас на абсолютный URL, я имел в виду «базовый URL». Например, «http»: //mywebsite.com/hellokitty будет перенаправлен на «https»: //mywebsite.com, что приведет к потере некоторой информации о пути, что приведет к разрыву каждой существующей ссылки с дополнительной информацией о пути.
ColacX
5
Чистый способ изменяет только схему URL с http -> https и оставляет все остальное эквивалентным. Он должен быть на стороне сервера, чтобы не было проблем с браузером.
JPPinto.com имеет пошаговые инструкции о том, как это делается, за исключением того, что они используют javascript (HttpRedirect.htm) вместо перенаправления на стороне сервера. По какой-то причине я не смог заставить IE запустить javascript, если у вас включен параметр «Показывать дружественные сообщения об ошибках HTTP», который включен по умолчанию. Еще одна особенность сценария - перенаправление на путь не работает даже в FF или Chrome Скрипт всегда перенаправляет в root. (Может быть, я что-то пропустил, потому что это должно перенаправить на путь.)
По этим причинам я использовал страницу ASP для перенаправления. Недостатком, конечно, является то, что для этого требуется, чтобы на сервере был включен классический ASP.
У меня было несколько проблем с использованием этого метода с IIS7. В основном проблемы с пользовательским интерфейсом, поскольку IIS7 позволяет легко что-то пропустить.
Во-первых, вам нужно установить ASP в качестве функции роли веб-сервера.
Во-вторых, использование виртуального каталога не работало должным образом в IIS7, и я не пытался отлаживать это. Вместо этого я поместил файл в корневую папку сайта и использовал ссылку «/SSLRedirect.asp» на странице ошибки 403.4 для ссылки на него.
Наконец, самая сложная часть, вы НЕ должны применять SSL для SSLRedirect.asp . В противном случае вы получите ошибку 403,4. Для этого вы выбираете файл в «Представлении содержимого» IIS7 и переключаетесь в «Представление функций», чтобы можно было редактировать настройки SSL для отдельного файла и отключить флажок «Требовать SSL».
Диспетчер IIS должен показывать имя файла в шапке.
Связанные инструкции на JPPinto.com были обновлены, чтобы подчеркнуть, что это не работает на IIS 7.5 или R2. Они говорят, что вы получите нарушение блокировки из-за изменений в безопасности в более новых версиях IIS. Вместо этого они предлагают использовать метод URL Rewrite 2.0 (аналогичный подход, как в ответе @toxaq).
Я легко могу обойти это перенаправление, поместив localhost куда-то в URI, например строку запроса yourdomain.com?localhost=true. Я бы предложил вместо этого проверить свойство Request.Url.Host
Aidy J
0
Я использую классический asp (интранет), и на страницах, где требуется вход в систему, входящий файл входа в систему выполняет перенаправление:
if Request.ServerVariables("SERVER_PORT_SECURE") <> "1" or Request.ServerVariables("HTTPS") <> "on" then
Response.Redirect "https://" & Request.ServerVariables("SERVER_NAME") & Request.ServerVariables("URL")
end if
Это, конечно, не включает в себя данные GET или POST. Таким образом, по сути, это чистое перенаправление на защищенную страницу.
Ответы:
Я думаю, что самый чистый способ, как описано здесь, на IIS-aid.com . Это только web.config, и поэтому, если вы меняете сервер, вам не нужно запоминать все шаги, которые вы прошли с пользовательской страницей ошибок 403.4 или другими специальными разрешениями, это просто работает.
источник
Самым простым и чистым решением, которое я нашел, было
В настройках SSL -> требуется SSL
На страницах ошибок -> Ошибка 403.4 -> Перенаправление на сайт HTTPS
На страницах ошибок -> Изменить параметры функций ... -> Установить подробные ошибки для локальных запросов и настраиваемые страницы ошибок для удаленного запроса
Преимущество заключается в том, что он не требует дополнительных строк кода. Недостатком является то, что он перенаправляет вас на абсолютный URL.
источник
Чистый способ изменяет только схему URL с http -> https и оставляет все остальное эквивалентным. Он должен быть на стороне сервера, чтобы не было проблем с браузером.
JPPinto.com имеет пошаговые инструкции о том, как это делается, за исключением того, что они используют javascript (HttpRedirect.htm) вместо перенаправления на стороне сервера. По какой-то причине я не смог заставить IE запустить javascript, если у вас включен параметр «Показывать дружественные сообщения об ошибках HTTP», который включен по умолчанию. Еще одна особенность сценария - перенаправление на путь не работает даже в FF или Chrome Скрипт всегда перенаправляет в root. (Может быть, я что-то пропустил, потому что это должно перенаправить на путь.)
По этим причинам я использовал страницу ASP для перенаправления. Недостатком, конечно, является то, что для этого требуется, чтобы на сервере был включен классический ASP.
OpsanBlog имеет скрипт ASP и инструкции, которые хорошо работают с IIS6.
У меня было несколько проблем с использованием этого метода с IIS7. В основном проблемы с пользовательским интерфейсом, поскольку IIS7 позволяет легко что-то пропустить.
Диспетчер IIS должен показывать имя файла в шапке.
источник
Global.asax
источник
Я использую классический asp (интранет), и на страницах, где требуется вход в систему, входящий файл входа в систему выполняет перенаправление:
Это, конечно, не включает в себя данные GET или POST. Таким образом, по сути, это чистое перенаправление на защищенную страницу.
источник
Я думаю, что «чисто» вы имеете в виду, как с перенаправлением 300. Конфиг для множества серверов и языков здесь .
источник