You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Apache/.htaccess规则,实现指定结构缓存文件优先加载?

Apache .htaccess 缓存优先加载配置方案

核心规则实现

将以下代码添加到网站根目录的.htaccess文件中:

# 开启URL重写引擎
RewriteEngine On

# 仅针对GET请求处理(避免POST等请求被缓存拦截)
RewriteCond %{REQUEST_METHOD} GET

# 匹配URL结构:/typeOfPost/category/ID/permalink
RewriteCond %{REQUEST_URI} ^/([^/]+)/([^/]+)/([0-9]+)/([^/]+)/?$

# 检查对应缓存文件是否存在
RewriteCond %{DOCUMENT_ROOT}/cache/responsive/%3/%1/%2/%4 -f

# 如果缓存存在,直接重写到缓存文件
RewriteRule ^ /cache/responsive/%3/%1/%2/%4 [L]

# 缓存不存在时,转发到PHP入口处理(根据你的实际入口文件调整)
RewriteRule ^ index.php [L]

规则说明

  • RewriteEngine On:启用Apache的URL重写模块,是所有重写规则的基础。
  • RewriteCond %{REQUEST_METHOD} GET:只对GET请求应用缓存规则,避免提交表单等POST请求被错误拦截。
  • RewriteCond %{REQUEST_URI} ^/([^/]+)/([^/]+)/([0-9]+)/([^/]+)/?$:精确匹配你的URL结构,用正则分组捕获typeOfPost(组1)、category(组2)、ID(组3,限定为数字)、permalink(组4),末尾的/?允许URL带或不带斜杠。
  • RewriteCond %{DOCUMENT_ROOT}/cache/responsive/%3/%1/%2/%4 -f:检查服务器上对应的缓存文件是否存在(-f表示是普通文件),用之前捕获的分组变量对应到缓存路径的各个部分。
  • RewriteRule ^ /cache/responsive/%3/%1/%2/%4 [L]:如果缓存文件存在,直接返回该文件内容,[L]表示这是最后一条规则,停止后续处理。
  • RewriteRule ^ index.php [L]:如果缓存不存在,将请求转发到PHP入口文件(如果你的入口不是index.php,替换成实际文件名),由PHP从数据库加载内容并生成缓存。

注意事项

  • 确保Apache已启用mod_rewrite模块,否则规则无法生效。
  • 缓存目录(/cache/responsive/)需要设置正确的权限,确保Apache服务器进程有读取权限。
  • 清理缓存时,直接删除对应ID目录下的缓存文件即可,下次请求会自动重新生成。

内容的提问来源于stack exchange,提问作者Francesco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 05:15:42