Этот конфиг близок ...
<FilesMatch "\.(php)$">
Header set Cache-Control "max-age=7200, must-revalidate"
</FilesMatch>
... но он делает все страницы php, а не только домашнюю страницу, как я хочу.
В основном разработчик сказал, что хочет, чтобы example.com был кэширован, а:
http://example.com/electronics/
не будет кэшироваться.
Обратите внимание, что разработчик использует красивые URL-адреса с платформой MVC, которая запускает все через index.php.
Как насчет символьной ссылки файла php на другое имя в каталоге, скажем ln -s index.php cachedindex.php
, если apache использует cachedindex.php для / и устанавливает для него заголовок кеша. Позвольте фреймворку использовать index.php для всех остальных страниц.
Хотя, поскольку вы работаете с разработчиком над этим, есть ли причина, по которой код php не просто выводит соответствующий заголовок кеша, когда установлены правильные параметры (в данном случае только когда параметры не установлены)?
Директива Apache FilesMatch принимает регулярные выражения, но это также должно означать, что вы можете вписаться в точное выражение только имени файла [index.php] (которое, как я понимаю - что может быть неверным - является единственным файлом, который вы хотите кэшировать, даже если он использует постоянные ссылки). Вы пробовали это?
Прямо сейчас вы находите все страницы PHP с помощью [". (Php) $"].