网页的最后修改日期未知

时间:2012-10-24 13:42:39

标签: apache

我想检查网页中文档的年龄,但是没有显示!这是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.

在另一台服务器上,还包括以下两行,但上面没有:

Last-Modified: Fri, 17 Jun 2011 11:17:45 GMT 
ETag: "2ce392-b1-4a5e688eae840"

所以我搜索了互联网,据我所知,在Apache中应该有一个配置来设置htaccess上的标题和etag。但是,我无法找到任何向我展示的地方。

以下是Apache中加载的模块,如果有帮助的话:

core 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的内容:

    <code>
    # 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>
     </code>

我将此文件放在public_html文件夹和文件update.ver所在的子文件夹nod_update3中。 然后我执行检查文档年龄的脚本,如下所示: ./check_http -H av.hostoi.com -u /nod_update3/update.ver -M 2d HTTP CRITICAL:HTTP / 1.1 200 OK - 文档修改日期未知 - 26316个中0159秒响应时间字节|时间= 0,158965s ;;; 0,000000大小= 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 - 最后一次修改13,5天前 - 56472个字节1059秒响应时间|时间= 1,059014s ;;; 0,000000大小= 56472B 0 ;;; srvmon插件#

您可以看到日期修改已知。那么为什么ver文件存在问题呢? 可以在此网址中检查该文件: http://av.hostoi.com/nod_update3//update.ver

2 个答案:

答案 0 :(得分:0)

问题是您在第一台服务器上启用了静态内容缓存,而在第二台服务器上启用了静态内容缓存。

请查看第二台服务器上的apache主配置文件,虚拟主机或.htacess 如果你有类似的东西:

<IfModule mod_expires.c>
FileETag MTime Size
ExpiresActive on

<filesMatch "\.ver$">
ExpiresDefault "modification plus 2 week"
</filesMatch>
</IfModule>

您还需要启用apache模块mod_expires。

希望这有帮助!

答案 1 :(得分:0)

回溯到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”。