2010-01-06 9 views
1

웹 서버 폴더에서 읽은 원래의 고전 ASP 페이지와 다르게 이름이 지정된 페이지를 웹 클라이언트에 반환 할 수 있습니까?서버의 ASP 페이지와 다른 이름으로 클래식 ASP 페이지를 반환하는 방법

F.i. 내가 구현하고자하는 실제 예 :

:이 전 페이지가 있어야한다 클라이언트의 웹 사이트에 반환 (2010년 1월 6일)이 페이지가 호출되면 오늘

calendar.asp 

라는 고전적인 ASP가 있다고 가정 해 보자 같은 페이지 내일 호출 할 필요가있는 경우

calendar-of-january-6-2010.asp 

, 클라이언트의 웹 사이트에 페이지 returend가 있어야한다 : 당신은 사진을 찍어

calendar-of-january-7-2010.asp 

. 내부 논리에 따라 특정 웹 클라이언트에 특정 ASP 페이지를 반환하십시오.

입력 해 주셔서 감사합니다.

업데이트 : 위 예제의 특정 날짜 파일은 물리적으로 존재하지 않습니다 (또는 리디렉션을 사용할 수 있음).

Response.ContentType = "application/vnd.ms-excel" 
Response.AddHeader "Content-Disposition", "attachment; filename=export.csv" 

아니이 같은 물론,이 저장/열기 상자에 대한 클라이언트 browswer 프롬프트를 드릴 것입니다 원인 : 나는 csv 파일을 반환하는 데 사용하는 같은 내가 뭔가를 찾을 기대했다. 그냥 비슷한 것.

+0

페이지가 실제로 존재합니까, 아니면 '가상'페이지입니까? – robertc

+0

올바르게 기억한다면 global.asa에서 요청을 포착하고 경로를 다시 작성해야합니다. 또한 asp (IIS가 파일을 찾을 수 없다고 말하지 말 것)에 의해 처리 된 무효 한 경로를 가지려면 무언가를해야합니다. – ccook

+0

또한 다른 이름의 페이지를 반환하는 대신 브라우저가 요청할 때 이미 이름을 알고 있기 때문에 다른 이름의 ASP 스크립트로 처리되는 '가상'페이지를 갖는 것이 더 나을 것이라고 생각합니다. 그렇지 않으면 리디렉션이 필요합니다. – ccook

답변

2

좋아요, 일일 캘린더에 링크하려는 것에 대한 편집을 보았습니다. 이 같은 그것의

생각해 : 링크 친화적 인 URL을되도록 페이지를 구축

  1. - /calendars/jan-01-2010.asp, /calendars/jan-02-2010.asp, 등등.
  2. /calendars /에 대해 사용자 정의 404 오류를 사용하도록 IIS 구성 - 클라이언트가 존재하지 않는 페이지를 요청할 때마다 서버가 "404 페이지를 찾을 수 없음"을 반환하는 대신 calendar.asp를 실행합니다.)
  3. 그게 전부입니다. 클라이언트는 결코 요청하지 않기 때문에 "calendar.asp"URL을 볼 수 없습니다. 그들이하는 모든 일은 당신이주는 우호적 인 연결 고리를 따르는 것입니다. 영리한 비트를 수행하는 서버입니다 ("유효하지 않은"요청을 받아들이고 해당 URL에 실제로 유효한 페이지가있는 것처럼).

StackOverflow는 ASP.NET MVC와 ASP.NET 라우팅을 사용합니다 엔진은 우호적 인 질문 URL을 가로 채고, 데이터베이스에서 찾아보고, 생성 된 페이지를 반환하므로 사용자 및 검색 엔진에 수천 개의 친숙한 이름의 페이지가있는 것처럼 보입니다. - 장면.

+0

하지만 클라이언트에 반환 된 이름은 날짜가있는 서버가 아닙니다. – Edelcom

+0

@ digcom : 아무런 이름도 클라이언트에 반환되지 않습니다. 클라이언트는 필요한 리소스를 지정하고 서버는 리소스를 전송하며 클라이언트가 이미 알고 있으므로 이름을 제공 할 필요는 없습니다. 요청되는 항목의 이름을 변경하도록 서버를 가져올 수있는 유일한 방법은 Response.Redirect를 사용하는 것인데 이는 실제로 클라이언트에게 "이 리소스를 요청하십시오."라고 말합니다. 이 작업을 수행하고 검색 엔진에 친숙하다는 목표는 서로 상충되는 것 같습니다. – AnthonyWJones

+0

Thx Dylan,이 일이 많습니다. 나는 이름이 클라이언트에게 돌려 보내지지 않는다는 것을 결코 깨닫지 못했다. 오늘 무언가를 배웠습니다. – Edelcom

0

URL에 매핑되는 실제 파일을 제어하기 위해 사용자 지정 ISAPI 필터 (C++)를 작성할 수 있습니다. 이 필터를 설치하려면 IIS 상자에 대한 관리자 권한이 필요하며 사용자 지정 URL에 .asp 확장명이 포함되도록하려면 필터가이 필터를 수용해야합니다 (ISAPI 필터는 주로 IIS의 확장명에 따라 선택되기 때문에) . thisthis MSDN 링크를 확인하십시오. This codeproject sample에는 몇 가지 포인터가 있습니다 (.chm에서 .asp 파일로 다시 매핑되므로 쉽게 따라 할 수 있습니다).

+0

ISAPI 필터를 작성할 수 있다는 것을 알고 있습니다. 문제는 고전적인 ASP를 사용하는 것이 어떤 방식 으로든 (헤더를 어떻게 든 비웃음으로써) 달성 될 수 있다는 것입니다. – Edelcom

+0

표준 asp.dll은 단순히 URL을 기반으로 파일을 찾고 global.asa를 건드리지 않고 잘못된 페이지 요청을보고하기 때문에 이것이 ASP에서이를 달성하는 유일한 방법이라는 것을 알고 있습니다. – tijmenvdk

+0

@ tijmenvdk, ​​나는 IIS가 모든 요청을 ASP로 보내도록 구성 될 수 있다고 생각한다. 이 프로세스는 새로운 확장을 보내는 것과 유사합니다. 그러나 나는 이것을 cms로 한 지 몇 년이 지났습니다. – ccook

0
  1. calendar.asp에서 새 페이지로 리디렉션 할 수 있습니다. 사용자가이 새 페이지를 요청하면 URL 재 작성을 사용하여 내부적으로 calendar.asp로 다시 작성합니다.

  2. 처음에는 calendar.asp에 요청하여 실제 페이지 (날짜가있는 페이지)를 생성하고 (24 시간 후에 페이지를 삭제하는 것을 잊지 마십시오)이 페이지로 리디렉션하십시오.