Я хотел бы проверить возраст документа на веб-странице, но он не отображается! вот результат telnet к серверу:
telnet av.hostoi.com 80
Connected to av.hostoi.com.
HEAD / HTTP/1.0
HTTP/1.1 200 OK
Date: Tue, 23 Oct 2012 16:55:40 GMT
Server: Apache
X-Powered-By: PHP/5.2.17
Connection: close
Content-Type: text/html
Connection closed by foreign host.
на другом сервере также включены следующие 2 строки, которых нет выше:
Last-Modified: Fri, 17 Jun 2011 11:17:45 GMT
ETag: "2ce392-b1-4a5e688eae840"
Итак, я поискал в Интернете и, насколько я мог понять, должна быть конфигурация в apache для установки заголовков и etag в htaccess? но я не мог найти ни одного места, которое бы показало это.
Вот загруженные модули в apache, если это поможет:
Ядро mod_authn_file mod_authn_default mod_authz_host mod_authz_groupfile mod_authz_user mod_authz_default mod_auth_basic mod_include mod_filter mod_log_config mod_env mod_expires mod_headers mod_setenvif mod_version PreFork http_core mod_mime mod_status mod_autoindex mod_asis mod_info mod_vhost_alias mod_negotiation mod_dir mod_actions mod_alias mod_rewrite mod_so mod_php5 mod_ruid2
Насколько я понимаю, mod_header должен быть включен, что, похоже, так?
изменить: попробовал предлагаемое решение: поместите файл .htaccess в папку /, даже если есть файл с именем, не загружать сюда. содержимое .htaccess:
#Do not remove this line, otherwise mod_rewrite rules will stop working
RewriteBase /
Options -Indexes
SSILastModified on
<IfModule mod_expires.c>
FileETag MTime Size ExpiresActive on
ExpiresDefault "access plus 10 days"
ExpiresByType application/javascript "access plus 1 week" ExpiresByType application/x-javascript "access plus 1 week" ExpiresByType application/x-shockwave-flash "access plus 1 week"
ExpiresByType text/css "access plus 1 week"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/x-icon "access plus 6 month"
ExpiresByType image/ico "access plus 6 month"
</IfModule>
Я помещаю этот файл в папку public_html и в подпапку nod_update3, где существует файл update.ver. затем я выполняю сценарий, который проверяет возраст документа следующим образом:
./check_http -H av.hostoi.com -u /nod_update3/update.ver -M 2d
HTTP CRITICAL: HTTP/1.1 200 OK - Document modification date unknown - 26316 bytes in 0,159 second response time |time=0,158965s;;;0,000000 size=26316B;;;0
как вы можете видеть, дата модификации не отображается, хотя на ftp-клиенте она показывает, что последний раз она была изменена 25.10.2012
Я попробовал проверить другой файл в той же папке, например:
./check_http -H av.hostoi.com -u /nod_update3/em000_32_l0.nup -M 2d
HTTP CRITICAL: HTTP/1.1 200 OK - Last modified 13,5 days ago - 56472 bytes in 1,059 second response time |time=1,059014s;;;0,000000 size=56472B;;;0
srvmon plugins #
как видите, изменение даты известно. так почему проблема с файлом ver? файл можно проверить по этому URL: http://av.hostoi.com/nod_update3//update.ver
X-Powered-By: PHP/5.2.17
Похоже, что эта страница создается PHP, и в этом случае Apache не знает метку времени последнего изменения. Задача сценария PHP - установить Last-Modified
заголовок в данном случае, чего он, по-видимому, не делает.
Если это просто статические файлы, вы, вероятно, захотите настроить Apache для их непосредственного обслуживания, а не для их обслуживания через скрипт PHP. Если это не статические файлы, вам необходимо исправить скрипт PHP, чтобы установить Last-Modified
заголовок соответственно.
Наконец-то мы перешли к новому хостинг-провайдеру, и теперь все работает. Спасибо за помощь и счастливого Рождества. Вот результат проверки.
srvmon plugins # ./check_http -H baza32.info -u /nod_update3/update.ver -M 3d
HTTP OK: HTTP/1.1 200 OK - 26168 bytes in 0,219 second response time |time=0,218608s;;;0,000000 size=26168B;;;0