.htaccess条件重写

时间:2009-07-05 05:03:06

标签: .htaccess mod-rewrite

我正在尝试使用.htaccess文件和Apache创建条件重写规则。

基本上我需要的是Apache将检查所请求的文件是否存在于子文件夹中,Apache将为此现有文件提供服务,或者,如果该文件不存在,Apache将加载index.php文件

我正在使用的文件夹结构是:

- /gallery
  - /cache
  - index.php
  - .htaccess

另外,我现在拥有的.htaccess是

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.+) - [PT,L]
RewriteRule ^(.*)$ index.php/$1 [L]

但是,这只适用于我想要查找的文件位于/ gallery文件夹中,但我需要查看该文件是否存在于/ cache文件夹中。

有人知道如何修改此规则以实现这一目标吗?

提前谢谢你,

性标题

1 个答案:

答案 0 :(得分:1)

请尝试以下规则:

RewriteCond %{REQUEST_URI} ^/(([^/]+/)*)gallery/
RewriteCond %{DOCUMENT_ROOT}%1gallery/cache/$0 -f
RewriteRule ^.+ cache/$0 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.* index.php/$0 [L]

第一个规则检查请求的路径是否是 cache 目录中现有文件的路径。如果是这样,它会将请求重写为该文件。