【发布时间】:2015-10-15 22:01:02
【问题描述】:
我的服务器为覆盖有限区域的地图提供地图图块。 目前,对不在地图区域内的图块的每个请求都会产生一个 apache 的 error_log 中的“文件不存在”消息。这是没用的 信息并极大地混淆了error_log - 所以找到 “真正的”错误很难,需要通过grep等过滤, 除了创建异常大的error_log。但我确实想要 出现在 apache 的 access_log 中的有效请求,因为我想计算 他们来确定使用情况。
我还没有找到任何合理的解决方案可以让我 从 error_log 中排除无效的磁贴请求,同时保留有效的磁贴请求 在 access_log 中。阅读 apache 文档并在线搜索, 我发现的“解决方案”是
() 使用 apache "SetEnvIf" 指令将环境变量设置为 由“CustomLog”使用 - 但这会将选定的文件排除在 两个日志。 “ErrorLog”不能使用环境变量
() 使用“RewriteCond”和“RewriteRule”为 “无效”请求。大概这会起作用,但需要 创建大量“无效文件”表达式 - 我假设 这么长的过滤器列表会降低服务器性能 对于所有文件。这似乎不切实际。
(对于那些不知道的人,图块存储在目录金字塔中, 表示缩放级别和嵌套子目录的最顶层目录 代表 x/y 位置,产生请求 ala .../TILES/10/167/403.png。所以像我这样的部分区域覆盖图 类似于“稀疏”数组,因为有许多不存在的 地图显示应用程序可能会尝试访问的任何级别的子目录。]
我希望得到一些相对简单的解决方案。我有一点 惊讶于仅从 error_log 中排除文件似乎不是 可能,因为我认为我的情况并不少见。
稍后 - 虽然关于是否有办法将所有 TILE 请求发送到单独的访问/错误日志组合 - 然后我可以访问前者并忽略后者。但据我所知,错误消息必须全部放在一个文件中。
甚至后来 - 发现这个,如果放在我的 TILES 目录中的 .htaccess 文件中,而不是在 apache 配置文件中,这似乎是一个可行的解决方案 I want "File does not exist" errors to be ignored or not logged
【问题讨论】: