Как определить, обслуживался ли документ по умолчанию в традиционном ASP? - PullRequest
2 голосов
/ 18 декабря 2008

В файле index.asp, который настроен в IIS в качестве документа по умолчанию для каталога, я пытаюсь определить с помощью .asp VBScript, была ли страница вызвана как документ по умолчанию, а не по имени, т.е. Я пытаюсь различить эти два случая на стороне сервера:

http://someurl/

http://someurl/index.asp

Я знаю, как это сделать в ASP.NET, но те же «серверные переменные», по-видимому, недоступны. Переменные сервера, которые имеют дело с URL-адресом и именем скрипта (PATH_ INFO, SCRIPT_NAME, URL), все возвращают «index.asp» независимо от того, каким образом вызывается скрипт.

Поиск в Google не дотягивает до этого. Есть идеи?

Ответы [ 4 ]

1 голос
/ 18 декабря 2008

Сервер не будет знать, но клиент узнает. В JavaScript вы можете проверить location.href, а затем передать это значение на сервер с помощью Ajax-вызова в любой механизм ведения журналов, который вы хотите.

0 голосов
/ 18 декабря 2008

Диодей верен, клиентский JavaScript, похоже, является единственным способом определения URL. Все остальные параметры требуют разделения страницы содержимого и страницы документа по умолчанию на отдельные файлы. Все, что я на самом деле пытаюсь сделать, это сконцентрировать оба запроса в URL документа по умолчанию (перенаправление в случае, когда index.asp запрашивается напрямую)

Чтобы удовлетворить требованию, чтобы это был отдельный фрагмент кода, я использовал этот блок JavaScript:

<script language="javascript" type="text/javascript">
var loc = window.location.href;
var re = /\/index.asp/i;
if (loc.search(re) != -1) {
    window.location.href = loc.replace (re,"/"); 
}
</script>
0 голосов
/ 18 декабря 2008

Аналогично предыдущему ответу, но при создании новой страницы назовите ее homepage.asp, который имеет либо #INCLUDE FILE = "index.asp", либо если он выполняет server.transfer или server.execute для index.asp держите имя сценария Request.ServerVariables в такте как homepage.asp, поскольку объект запроса не изменит имя сценария после его передачи в ASP. Тогда вы можете просто проверить это значение, и вам не нужно будет полагаться на реферер или делать перенаправление. Это все равно будет означать, что вы должны изменить документ по умолчанию.

0 голосов
/ 18 декабря 2008

Как насчет этого ...
Создайте новый файл IndexDefault.asp и установите его в качестве документа по умолчанию
В IndexDefault.asp сделайте его перенаправлением на Index.asp
В IndexDefault.asp проверьте ссылку для IndexDefault.asp.

...