방금 404를 이해했을 때, 한 번은 모든 프로그램 코드를 404로 작성하는 것이 환상적이었습니다.
ASP의 Transfer를 볼 때까지 404로 정적 페이지를 생성한다는 아이디어는 지금도 큰 프로그램에서도 Server.Transfer를 사용하여 쉽게 얻을 수 있습니다. .
<!-#포함 파일 = bin/404_qury->
< %
CASE BIN_COMMAND를 선택하십시오
케이스 빈
Server.Transfer (빈/웹)
케이스 업로드 파일
Server.Transfer (Bin/Send-stream)
다른 경우
Server.Transfer (bin/send-404)
종료 선택
%>
Hehe, BIN_COMMAND를 기반으로 한 경우 BIN이라는 것이 매우 기능적인지 판단하는 것이 서버에서 BIN/WEB로 전송합니다. 문제는 정적 페이지의 효과를 달성하는 것입니다. . PHP에는 재 작성이 없습니다.
bin/404_Query의 소스 코드는 다음과 같습니다.
< %
urls = mid (request.querystring, instr (request.querystring, : 80) +4)
악기 (urls,/)> 0 인 경우
bin_command = 왼쪽 (urls, instr (urls,/) -1)
getfile = replace (urls, bin_command &/,)
또 다른
bin_command = bin
끝 If
%>
이 코드는 주로 BIN_COMMAND가 실행되는지 결정합니다.
예를 들어 : demo.com/index5.html, 그런 다음 bin_command = bin, 당신은 알 수 있습니다.
demo.com/uploadfiles/123456.gif (이 파일은 실제로/123456.gif에 해당합니다. 그런 다음 bin_command = uploadfiles에 해당합니다. 내가 쓴 기사 AP 실용적인 바이너리 write 및 adodb.stream을 쓴 기사를 참조 할 수 있습니다.
demo.com/111/222, BIN_COMMAND = 111 ″, SELECT CASE에는 정의가 없으며 다른 것이며 처리를 위해 BIN/SEND-404에 전달했습니다.
이런 식으로 모든 방문자 (Baidu, Google 포함)는이 사이트는 정적 페이지입니다. 내가 아는 한, 국내 IIS 호스트의 99.9%가 isapi_rewrite를 지원하지 않으며, 자원이 너무 심각하고 곧 취소 될 것이기 때문에 한 번 만났습니다.
다음은 참조를 위해 뒷면에 첨부 된 ASP Learning Online에서 본 것입니다.
Server.Transfer 메소드를 호출하고 첫 번째 페이지의 실행을 즉시 종료하고 두 번째 페이지를 실행하기 시작합니다.
첫 번째 페이지가 응답 버퍼를 쓰기 시작하면 두 번째 페이지가 버퍼를 교체하는 대신 버퍼에 추가됩니다.
버퍼가 열려 있으면이 방법은 ASP 버퍼가 닫히지 않으면 HTTP 헤드가 수정되지 않으면 HTTP 헤드를 수정합니다.
다른 응용 프로그램으로 전송되면 시작 페이지 응용 프로그램 및 세션 객체에는 응용 프로그램 정보가 포함됩니다.
모범적 인 예
다음 예제 페이지는 Server.Transfer 메소드를 사용하는 방법을 설명합니다.
1.
<html>
<body>
<H3> 1 단계 -형식 페이지 </h3>
<테이블 테두리 = 1>
<tr>
<th> 포스트 </th>
<td>
<양식 action = page2.asp method = post>
<입력 유형 = 텍스트 이름 = 이름/>
<입력 유형 = 제출 값 = 제출/>
</form>
</td>
</tr> <te>
</tr>
<th> get </th>
<td>
<양식 action = page2.asp method = get>
<입력 유형 = 텍스트 이름 = 이름/>
<입력 유형 = 제출 값 = 제출/>
</form>
</td>
</테이블>
</body>
</html>
2. 다음 코드를 page2.asp (따옴표없이)로 넣습니다.
< % @language = vbscript %>
<html>
<body>
<H3> 2 단계 -전송 페이지 </h3>
< %
케이스 UCASE를 선택하십시오
사례 게시물
Server.Transfer Page3a.asp
케이스를 얻습니다
Server.Transfer Page3b.asp
다른 경우
응답. 알려지지 않은 HTTP 동사를 사용했습니다.
종료 선택
%>
</body>
</html>
3. 다음 코드를 page3a.asp (견적없이)로 넣습니다.
< % @language = vbscript %>
<H3> 3A -Post 결과 </h3>
<p> hello < % = request.form (이름) %> </p>
4. 다음 코드를 page3b.asp로 넣습니다 (견적없이) :
< % @language = vbscript %>
<H3> 3B- 결과 </h3>
<p> hello < % = request.querystring (이름) %> </p>
참고 : 마지막 두 페이지는 불완전한 HTML 페이지입니다. 두 페이지 모두 두 번째 페이지 버퍼에 추가되기 때문입니다.
이 인스턴스를 테스트하려면 page1.asp를 찾아보십시오.