使用mod_rewrite进行缓存

时间:2013-10-16 09:03:35

标签: php regex apache .htaccess mod-rewrite

我想重新编写像http://www.example.com/videos这样的请求,以便Apache从文档根目录中的缓存目录中获取它 我需要两个条件才能实现:

  1. 该文件没有扩展名,因此没有videos.css等
  2. 该文件存在于cache /
  3. 如果不满足上述条件,我想将请求路由到index.php。

    我应该在我的.htaccess中加入什么来实现这个目标?

2 个答案:

答案 0 :(得分:2)

如果您使用.html扩展程序创建缓存文件,也许这样的内容对您有用。

RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{QUERY_STRING} ^$
RewriteCond %{DOCUMENT_ROOT}/cache/%{REQUEST_URI}\.html -f
RewriteRule .* cache/%{REQUEST_URI}\.html [L]

答案 1 :(得分:1)

尝试以下两条规则:

RewriteEngine On

#forward to cache/<file> if it exists in %{DOCUMENT_ROOT}/cache
RewriteCond %{DOCUMENT_ROOT}/cache/$1 -f
RewriteRule ^([^/.]+)/?$ /cache/$1 [L]

# otherwise forward to /index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/cache/$1 !-f
RewriteRule ^ /index.php [L]