Apache2 mod_过期不工作

Apache2 mod_过期不工作,apache,.htaccess,mod-expires,Apache,.htaccess,Mod Expires,我最近在支持Apache2的VPS上部署了一个网站,并正在研究YSlow提出的性能改进建议。 这些改进包括使用mod_deflate和mod_expires,由于我有root访问权限,我可以直接编辑Apache配置文件 mod_deflate现在正在工作,但我对mod_expires有问题,所以我做了以下工作: 启用expires模块并重新启动服务器 a2enmod expires service apache2 restart 在mods_enabled下创建一个新文件“expires.co

我最近在支持Apache2的VPS上部署了一个网站,并正在研究YSlow提出的性能改进建议。 这些改进包括使用mod_deflate和mod_expires,由于我有root访问权限,我可以直接编辑Apache配置文件

mod_deflate现在正在工作,但我对mod_expires有问题,所以我做了以下工作:

启用expires模块并重新启动服务器

a2enmod expires
service apache2 restart
在mods_enabled下创建一个新文件“expires.conf”,该文件包含以下内容:

<IfModule mod_expires.c>
  # Enable expirations
  ExpiresActive On

  # Default directive
  ExpiresDefault "access plus 1 month"

  # My favicon
  ExpiresByType image/x-icon "access plus 1 year"

  # Images
  ExpiresByType image/gif "access plus 1 month"
  ExpiresByType image/png "access plus 1 month"
  ExpiresByType image/jpg "access plus 1 month"
  ExpiresByType image/jpeg "access plus 1 month"

  # CSS
  ExpiresByType text/css "access plus 1 month"

  # Javascript
  ExpiresByType application/javascript "access plus 1 year"
</IfModule>

#启用过期
过期于
#默认指令
ExpiresDefault“访问加1个月”
#我的favicon
过期按类型图像/x图标“访问加1年”
#图像
ExpiresByType image/gif“访问加1个月”
ExpiresByType图像/png“访问加1个月”
ExpiresByType图像/jpg“访问加1个月”
过期按类型图像/jpeg“访问加1个月”
#CSS
ExpiresByType文本/css“访问加1个月”
#Javascript
ExpiresByType应用程序/javascript“访问加1年”
但是,当在网络下的各种浏览器开发工具上进行检查时,文件显示的缓存控件为None

我想在我的网站的根目录:/var/www/sitename/public\u html中的.htaccess中使用上面的mod\u expires脚本,因为.htaccess中的设置会覆盖apache配置文件中先前的任何设置

为此,我在apache2.conf中启用了htaccess

我通过在htaccess文件中引入一个错误(注释掉了IfModule open标记)来测试我的htaccess文件是否工作正常。刷新浏览器时出现500服务器错误。所以htaccess文件正在处理中

不幸的是,浏览器开发工具仍然没有显示缓存控制,我的想法也快用完了

我错过什么了吗?
谢谢

最可能的情况是,您的
expires.conf
在加载expires模块之前被解析,因为您已将配置文件包含在
mods enabled
文件夹中


将配置文件放入
conf.d
并重新启动Apache。

我终于解决了这个问题:

  • 首先,我注意到所有其他配置文件与我在启用mods下创建的配置文件之间存在差异:其他配置文件是指向mods下各自文件的符号链接。这不应该是一个问题,但绝对最好遵守惯例

  • 在创建文件后,我似乎没有重新启动apache2服务


明显的问题,但我认为您已经包括mod_expires include line(经常被注释掉),否则IfModule语句将失败,并且不会读取任何配置。感谢您的建议,但是apache2.conf做了如下工作:1)处理与/mods enabled/*.load匹配的所有文件。2) 处理与/mods enabled/*.conf匹配的所有文件。这将确保在解析配置文件之前加载模块。对吗?我尝试过的.htaccess黑客也会解决这个问题吗?