Форум

/ домой \ \ темы /



Тема: SSI + error=path\name.ext

07/01/2008 00:54 Gebb:
В документации на error=path\name.ext сказано
"Файл ошибки. Полный путь к файлу или скрипту возвращаемому при отсудствии запрошенного файла. Для скриптов и SSI переменная QUERY_STRING будет содержать имя запрошенного файла."

1) Скрипт мой так и не запустился при указании его в error, хотя с ним всё в порядке. Сервер сообщает что-то типа error running script.
2) Я получаю пустую переменную QUERY_STRING в SSI-файле. В остальном SSI работает нормально.

Вывод <!--#printenv --> довольно странный:
HTTP:
default)
Error. File not found.
=ror. File not found.

HOST=192.168.0.117:8080
ACCEPT=text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
ACCEPT_LANGUAGE=ru-RU,ru;q=0.9,en;q=0.8
ACCEPT_CHARSET=iso-8859-1, utf-8, utf-16, *;q=0.1
ACCEPT_ENCODING=deflate, gzip, x-gzip, identity, *;q=0
CONNECTION=Keep-Alive, TE
TE=deflate, gzip, chunked, identity, trailers
DATE_GMT=06/01/2008 18:37:49
DATE_LOCAL=07/01/2008 00:37:49
QUERY_STRING=
SERVER_PORT=8080
REMOTE_ADDR=192.168.0.117
QUERY=_test_

Request:
\info2.html=

\info2.html - это отсутствующий файл, к которому обратился клиент.
Как заставить сервер заполнять QUERY_STRING именем файла, который запросил клиент?

P.S.: В целом отличная прога, спасибо автору!
07/01/2008 06:39 Max:
Вообще имя запршенного файла кладется в PATH_INFO, но из SSI он не виден. Виден только из CGI
07/02/2008 00:58 Gebb:
Ошибка у меня в тексте.
localhost:8080/ следует читать как localhost/
07/02/2008 00:57 Gebb:
Баг в запуске скрипта, прописанного в конфиге после error=.

Как воспроизвести.
1. Установить shttp в папку по умолчанию (C:\shttps\).
2. Положить в папку C:\shttps\www\ какой-нибудь валидный файл index.html
2. Положить в папку C:\shttps\www\cgi-bin\ файл notfound.bat следующего содержания:
@echo off
echo Location: /
echo.
echo.

3. Прописать в http.cfg следующее:
error="c:\shttps\www\cgi-bin\notfound.bat"
4. Запустить сервер на порту 80.
5. Открыть в броузере ссылку
Link temporary removed

В броузере отображается следующее:
Error run \cgi-bin\notfound.bat with \non-existent.html

Ожидаемое поведение: переход по адресу Link temporary removed и показ файла index.html

Если же задать адрес скрипта напрямую:
Link temporary removed
То скрипт отрабатывает нормально.

Судя по всему, файл notfound.bat даже не запускается, когда пользователь пытается обратиться к несуществующему файлу.

Пользователь: Пароль: Новый пользователь:   Запомнить пароль: