Дата последнего изменения веб-страницы неизвестна
Я хотел бы проверить возраст документа на веб-странице, но он не отображается! Вот результат телнет к серверу:
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 для включения и включения заголовков в 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? файл можно проверить по этому адресу: http://av.hostoi.com/nod_update3//update.ver
3 ответа
X-Powered-By: PHP/5.2.17
Похоже, что эта страница генерируется PHP, и в этом случае Apache не знает последний измененный tamestamp. Это скрипт PHP обязан установить Last-Modified
заголовок в этом случае, который, по-видимому, не делает.
Если это просто статические файлы, то вы, вероятно, захотите настроить Apache для их непосредственного обслуживания, а не для обслуживания через скрипт PHP. Если они не являются статическими файлами, то вам нужно исправить скрипт PHP, чтобы установить Last-Modified
заголовок соответственно.
Возвращаясь к исходному коду Apache, мы видим, что основная причина этой неправильной конфигурации заключается в том, что семантика, включенная «Xbithack Full», неявно перезаписывает семантику, включенную «SSILastModified On».
if (conf->lastmodified > 0) {
... {
ap_update_mtime(r, r->finfo.mtime);
ap_set_last_modified(r);}}
else if (((conf->xbithack == XBITHACK_FULL ||
(conf->xbithack == XBITHACK_UNSET &&
DEFAULT_XBITHACK == XBITHACK_FULL))
...)) {
ap_update_mtime(r, r->finfo.mtime);
ap_set_last_modified(r);
}
Таким образом, одним из возможных решений было бы изменение «SSILastModified on» на «XBitHack Full».
Мы наконец перешли на нового хостинг-провайдера и теперь все работает. Спасибо за помощь и счастливого Рождества. Вот результат проверки.
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