Htaccess指令不适用于所有文件

时间:2017-10-15 22:52:34

标签: php apache .htaccess mod-rewrite

我在Joomla的根访问文件中添加了.htaccess指令。 现在它按预期工作,除了某些文件夹中的文件。 我检查了文件夹中没有应用它的文件,但是没有其他.htaccess文件可以覆盖根目录中的默认.htaccess。 它没有应用的文件示例是js和css文件。

  1. 这些文件来自非第三方服务器的同一来源。
  2. 这些文件不包含任何查询字符串。
  3. 我使用的指令是这样的:

    ExpiresActive On
    ExpiresByType image/jpg "access plus 1 year"
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/gif "access plus 1 year"
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType application/pdf "access plus 1 month"
    ExpiresByType text/x-javascript "access plus 1 month"
    ExpiresByType application/x-shockwave-flash "access plus 1 month"
    ExpiresByType image/x-icon "access plus 1 year"
    ExpiresDefault "access plus 2 days"
    

    我还可以查看哪些内容,可能会覆盖上述指令。

1 个答案:

答案 0 :(得分:0)

如果不遵守这些ExpiresByType,那意味着Apache不提供这些文件,或者某处有另一个覆盖。

一些joomla插件可以动态地为css和js提供服务(以增加压缩或过期),因此这是你应该首先注意的地方。 一些Web服务器在Apache之前使用nginx代理,而css / js文件由nginx而不是Apache提供。所以看看你的apache日志文件,它是为你提供这些文件的Apache。 再看一下您的虚拟主机配置。在同一服务器上的其他站点上没有问题并不意味着覆盖不在您的vhost配置上。

停用PHP,重新启动服务器,加载这些css / js文件,看看是否有任何变化。 (这是测试这些文件是否由任何PHP脚本处理) 尝试加载一些不存在的css文件并分析您的访问日志。 关闭Apache并加载css文件(这是为了检查你是否有nginx代理或类似的东西)。