这个配置很接近...
<FilesMatch "\.(php)$">
Header set Cache-Control "max-age=7200, must-revalidate"
</FilesMatch>
...但它会处理所有 php 页面,而不仅仅是我想要的主页。
基本上,开发人员说他希望 example.com 被缓存,而:
http://example.com/electronics/
不会被缓存。
请注意,开发人员正在使用带有 MVC 框架的漂亮 URL,该框架通过 index.php 运行所有内容。
Apache FilesMatch 指令接受正则表达式,但这也意味着您可以仅使用文件名 [index.php] 的精确表达式(据我了解,这可能是不正确的)是您要缓存的唯一文件,即使它使用永久链接)。你试过吗?
现在,您正在使用 [".(php)$"] 查找所有 PHP 页面。
如何将 php 文件符号链接到目录中的另一个名称,例如
ln -s index.php cachedindex.php
,让 apache 使用 cachedindex.php 作为 / 并在其上设置缓存标头。让框架继续对所有其他页面使用 index.php。尽管由于您正在与开发人员一起工作,但是当设置了正确的选项时(在这种情况下,只有在没有设置选项时),php 代码不只是输出适当的缓存标头是否有原因?