1

我想在网页中查看文档的年龄,但没有显示!这是远程登录到服务器的结果:

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中设置headers和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 文件放在 / 文件夹中,即使有一个名为 do not upload here 的文件。.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 - 文档修改日期未知 - 0,159 秒响应时间内 26316 个字节 |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以前 - 1,059 秒响应时间内 56472 字节 |time=1,059014s;;;0,000000 size=56472B;;;0 srvmon plugins #

如您所见,日期修改是已知的。那么为什么ver文件有问题?该文件可以在这个网址中检查:http: //av.hostoi.com/nod_update3//update.ver

4

2 回答 2

0

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

如果您有类似以下内容,请查看第二台服务器上的 apache 主配置文件、虚拟主机或 .htacess:

<IfModule mod_expires.c>
FileETag MTime Size
ExpiresActive on

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

您还需要启用 apache 模块 mod_expires。

希望这可以帮助!

于 2012-10-24T13:56:58.380 回答
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”。

于 2021-02-24T00:43:08.760 回答