Небольшая проблема в Apache

evgen5555

Она съела мой моск.
 
Короче, есть CGI, который выдает нужное поле хедера Last-Modified. Не знаю, с какого хуя разработчики это сделали, но после срабатывания скрипта поле Last-Modified апач сменяет на текущее время.
Далее, я узнал, что проблема решается с помощью изменения названия скрипта добавлением волшебного префикса "nph-", например, с trash.cgi на nph-trash.cgi. И действительно, nph-trash.cgi сработал, как надо.
 
Но остается вопрос - как быть с клиентами, у которых адрес http://host.com/cgi-bin/trash.cgi захардкоден (поле If-Modified-Since не посылается тоже, понадеялся на апач и которые скачивают каждые полсекунды неизмененный текст, полагая, что он всё-таки изменился, перегружая сервер?
Можно ли сделать какой-нибудь Rewrite?
В httpd.conf - о конфигурации NPH ни слова. Видимо, это как-то в коде прошито, что ли.

Trofimovyoa

Можно ли сделать какой-нибудь Rewrite?
можно

RewriteEngine on
RewriteBase /cgi-bin
RewriteCond %{SCRIPT_FILENAME} /trash.*
RewriteRule /(.*)$ nph-$1 [PT]

при запросе trash-скриптов из /cgi-bin апач будет обращаться к их nph-trash версиям

evgen5555

Спасибо за совет, понял, как это работает, но лучше серваку от этого не стало
Он теперь ебошит nph-скрипт как не-nph, то есть, выдаёт 500 Internal server error, malformed header

skvoria

Вообще, проблема решается путем пересборки апача.
То есть он не имеет права меня заголовок ответа, если к нему от скрипта пришел правильный.
Покажи, какой заголовок выдает скрипт, и какой заголовок прописывает сервер.
И версию апача.

evgen5555

---
print $q->header(-content_disposition=>'attachment; filename=trash.txt',
     -Last_Modified=>$ftime,
     -blablabla=>$ftime,
     -content_length=>scalar $fileinfo->size,
     -pragma=>'No-cache');
 
---
# ./trash.cgi id=3940
Content-length: 2801
Pragma: No-cache
Blablabla: Fri May 18 13:19:23 2007
Last-modified: Fri May 18 13:19:23 2007
Content-disposition: attachment; filename=trash.txt
Content-Type: text/html; charset=ISO-8859-1
---
#telnet localhost 8080
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
GET /cgi-bin/trash.cgi?id=3940 HTTP/1.0
HTTP/1.1 200 OK
Date: Fri, 18 May 2007 11:33:07 GMT
Server: Apache/2.0.52 (Red Hat)
Pragma: No-cache
Blablabla: Fri May 18 13:19:23 2007
Content-disposition: attachment; filename=trash.txt
Content-length: 2801
Last-Modified: Fri, 18 May 2007 11:33:07 GMT
Connection: close
Content-Type: text/html; charset=ISO-8859-1

skvoria

что-то мне подсказывает, что он просто не жрет твой формат даты:
вот твой: Fri May 18 13:19:23 2007
а вот его: Fri, 18 May 2007 11:33:07 GMT
Изобрази ее в GMT.

evgen5555

Ага, тоже заметил, ща поменяю localtime на gmtime =)

Marinavo_0507

Небольшая проблема в Асете?
Оставить комментарий
Имя или ник:
Комментарий: