HTTP : // 버전의 사이트로 이동하려는 모든 시도를 해당 HTTPS : //로 리디렉션하는 깔끔한 방법이 있습니까?
답변
가장 깨끗한 방법은 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>
답변
내가 찾은 가장 쉽고 깨끗한 솔루션은
-
SSL 설정에서-> SSL 필요
-
오류 페이지에서-> 403.4 오류-> HTTPS 사이트로 리디렉션
-
오류 페이지에서-> 기능 설정 편집 …-> 로컬 요청에 대한 자세한 오류 설정 및 원격 요청에 대한 사용자 정의 오류 페이지 설정
이점은 추가 코드 줄이 필요 없다는 것입니다. 단점은 절대 URL로 리디렉션한다는 것입니다.
답변
깔끔한 방법은 http-> https에서 URL 체계 만 변경하고 다른 모든 것은 동일하게 둡니다. 브라우저 문제가 없도록 서버 측이어야합니다.
JPPinto.com에는 서버 측 리디렉션 대신 javascript (HttpRedirect.htm)를 사용하는 것을 제외하고는이 작업을 수행하는 방법에 대한 단계별 지침 이 있습니다. 어떤 이유로, ‘친숙한 HTTP 오류 메시지 표시’가 활성화되어 있으면 IE가 자바 스크립트를 실행할 수 없습니다. 기본적으로 켜져 있습니다. 스크립트의 또 다른 점은 경로로의 리디렉션이 FF 또는 Chrome에서도 작동하지 않는다는 것입니다. 스크립트는 항상 루트로 리디렉션됩니다. (아마도 경로로 리디렉션되어야하기 때문에 무언가를 놓쳤습니다.)
이러한 이유로 리디렉션에 ASP 페이지를 사용했습니다. 물론 단점은 서버에서 클래식 ASP를 활성화해야한다는 것입니다.
OpsanBlog에는 IIS6에서 잘 작동 하는 ASP 스크립트 및 지침 이 있습니다.
IIS7 에서이 방법을 사용하는 데 몇 가지 문제가 있습니다. IIS7을 사용하면 쉽게 놓칠 수 있으므로 사용자 인터페이스 문제가 대부분입니다.
- 먼저 ASP를 웹 서버 역할 기능으로 설치해야합니다.
- 둘째, IIS7에서 가상 디렉터리를 사용하는 것이 예상대로 작동하지 않아 디버깅을 시도하지 않았습니다. 대신 사이트의 루트 폴더에 파일을 넣고 403.4 오류 페이지의 url ‘/SSLRedirect.asp’를 사용하여 참조했습니다.
- 마지막으로 가장 까다로운 부분 은 SSLRedirect.asp에 SSL을 적용해서는 안됩니다 . 그렇지 않으면 403.4 오류가 발생합니다. 이렇게하려면 IIS7 ‘콘텐츠보기’에서 파일을 선택하고 ‘기능보기’로 전환하여 단일 파일의 SSL 설정을 편집하고 ‘SSL 필요’확인란을 비활성화하십시오.
IIS 관리자는 파일 이름을 헤더에 표시해야합니다.
답변
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:"));
}
답변
클래식 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 데이터를 포함하지 않습니다. 실제로 보안 페이지로 깔끔하게 리디렉션됩니다.