LINUX.ORG.RU
решено ФорумAdmin

Проблемы с CGI-обработкой в Apache httpd

 , , , ,


0

1

Есть такая штука, как parser (parser.ru, дрисня от артемия лебедева). Там бинарь, который должен обрабатывать html-файлы, в которых какая-то своя стрёмная разметка. Сливаю бинарь, пытаюсь настроить обработку через этот бинарь.

Вот это пишу в .htaccess:

AddHandler parser3-handler .html
Action parser3-handler cgi-bin/parser3/parser3.cgi

В ответ на это апач вываливает 400 Bad Request. В логах «AH00126: Invalid URI in request GET / HTTP/1.1». В исходниках апача такое:

4168    if (!r->uri || ((r->uri[0] != '/') && strcmp(r->uri, "*"))) {
4169        ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(00126)
4170                     "Invalid URI in request %s", r->the_request);
4171        return HTTP_BAD_REQUEST;

То есть, запрос должен начинаться с /, а начинается с G. Что я не так делаю и где сделать так, чтобы начинался как положено? Были попытки сделать так, тоже не работает:

Action parser3-handler cgi-bin/parser3/parser3.cgi
<FilesMatch "\.html$">
  SetHandler parser3-handler
</FilesMatch>

Если же в Action добавить начальный слэш в путь до обработчика, как ниже, получаю 404, мол нету файла /cgi-bin/parser3/parser3.cgi/index.html

Action parser3-handler /cgi-bin/parser3/parser3.cgi

То же самое, если реврайтить запросы на parser3.cgi. Куда копать?


Если же в Action добавить начальный слэш в путь до обработчика, как ниже, получаю 404, мол нету файла /cgi-bin/parser3...

потому что для /cgi-bin прописан Alias или ScriptAlias должен быть. и скорее всего он дефолтовый где-то прописан.

Komintern ★★★★★
()

То есть, запрос должен начинаться с /, а начинается с G

С ″G″ начинается r->the_request, а со ″/″ должен начинатся ″r->uri″.

На каталог ″cgi-bin/parser3/″ стоит ″Options ExecCGI″? Сам ″parser3.cgi″ рабочий, с командной строки запускается?

И, если это, действительно, «дрисня», дак зачем тащить её на ЛОР, у них же есть http://www.parser.ru/forum/ .

mky ★★★★★
()
Ответ на: комментарий от Komintern

ScriptAlias

Это. Очевидно, но как-то осталось без внимания. Спасибо.

tyan
() автор топика
Ответ на: комментарий от mky

С ″G″ начинается r->the_request, а со ″/″ должен начинатся ″r->uri″

Да, действительно. В моём случае первый символ - «с» (так как путь к cgi-bin/parser3.cgi не начинается с /).

tyan
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.