Htaccess指令不适用于所有文件

问题描述:

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

  1. 这些文件来自非第三方服务器。
  2. 这些文件不包含任何查询字符串。

我使用的指令是这样的:

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" 

还有什么我可以检查,找出什么可能会改写上面的指令。

+0

你的Apache服务器和虚拟主机配置如何? – Webdesigner

+0

这很好,因为我在同一台服务器上有很多其他网站,并且在其他网站上没有这个问题。 – Joshi

如果这些ExpiresByType没有兑现,这意味着这些文件不是由Apache提供的,或者在某处有另一个覆盖。

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

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